banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

iOS开发之自定义系统的UIActionSheet修改按钮的属性

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 {
        }
    }
} 

}

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.