在 SDK 中,iOS 中的 UIActionSheet 只提供了少数几种样式。这些样式基本上可以满足开发需求,但有时也会遇到一些比较麻烦的要求。这时就需要单独定制 UIActionSheet,通过修改按钮的属性来实现修改。如果是 iOS4 或之前的版本,操作起来比较复杂。但是从 iOS5 开始,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];
//btn 的选择状态,否则选择后不变背景
[button setSelected];
} else {
}
}
} else {
//IOS4之前版本下按钮不是继承于UIButton而是UIThreePartButton
for (UIView \*view in actionSheet.subviews) {
if (view.tag == 2) {
UIControl \*btn = (UIControl \*) view;
\[btn setSelected:YES\];
} else {
}
}
}
}