在 SDK 中,iOS 中的 UIActionSheet 只提供了少數幾種樣式,這些樣式基本上可以滿足開發需求,但有時也會遇到比較麻煩的要求,這時就需要單獨定制 UIActionSheet,通過修改按鈕的屬性來實現修改。如果是 iOS 4 或之前的版本,操作起來比較複雜,但是從 iOS 5 開始,UIActionSheet 中的按鈕被更改為 UIButton 類型後,就比較容易了。可以直接遍歷 UIActionSheet 的所有子視圖,找到對應的按鈕並修改其屬性,實現起來非常簡單。需要注意的是,UIActionSheet 中按鈕列表中的按鈕索引 ID 可以直接使用 tag 屬性來獲取,這樣很方便找到它們。
參考代碼:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {
for (UIView *view in actionSheet.subviews) {
if (view.tag == 2) {
UIButton *button = (UIButton *) view;
// 改變背景
[button setBackgroundImage:[button backgroundImageForState] forState];
// 改變顏色
[button setTitleColor:[UIColor whiteColor] forState];
// 按鈕的選擇狀態,否則選擇後背景不變
[button setSelected];
} else {
}
}
} else {
//在iOS 4之前的版本中,按鈕不是繼承於UIButton,而是UIThreePartButton
for (UIView \*view in actionSheet.subviews) {
if (view.tag == 2) {
UIControl \*btn = (UIControl \*) view;
\[btn setSelected:YES\];
} else {
}
}
}
}