iOS 中 UIActionSheet 在 SDK 中只提供了少数几种样式,这些样式基本可以满足开发需求了,但是也会遇到比较麻烦的要求,这是就需要单独定制 UIActionSheet,通过修改 button 的属性来实现修改,如果是 ios4 或者之前版本操作起来比较复杂,但是 ios5 以后,UIActionSheet 中的 button 换成 UIButton 类型以后就比较容易了,可以直接便利 UIActionSheet 的所有 subview,找到对应的 button 就可以修改它的属性,实现还是很简单的,需要注意的是 UIActionSheet 中 button 列表中的 button 索引 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 {
}
}
}
}