ios iOS专栏

iOS Alert系统弹框修改标题及按钮颜色

2016-05-05  本文已影响7151人  嘞似彩笔

怪物背景:

事情的经过是这样的,公司项目里需要一个弹框具有灰色按钮,而且不可点。本来UI是给了设计图的,但是他们说如果能用iOS原生弹框最好。这样符合什么什么iOS的逼格之类的(总之就是要求用原生的,无奈~)。

吾与此怪大战许久(其实就十分钟不到),终于发现,在下当前练气修为,实在拿它没办法,遂前往寻求度娘女神的帮助,终于发现了解决办法,。

杀怪秘籍:

简单来说,就是采用KVC的方式~

正常情况下我们配置出来的UIAlertController可能是长这样子的

还有这样子的:

代码什么的我就不写了,。只要入了我大iOS门派的,即使练气1层估计都会~,。

不过,我们万恶的UI总会有各种想法(当然这些想法也是必要的),要求我们修改上面这些的字体颜色啊什么什么的。那就没办法了~只好开启主角光环召唤外挂了~

1.标题和内容的文字设置:

//修改title

NSMutableAttributedString *alertControllerStr = [[NSMutableAttributedString alloc] initWithString:@"提示"];

[alertControllerStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 2)];

[alertControllerStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:17] range:NSMakeRange(0, 2)];

[alertController setValue:alertControllerStr forKey:@"attributedTitle"];

//修改message

NSMutableAttributedString *alertControllerMessageStr = [[NSMutableAttributedString alloc] initWithString:@"提示内容"];

[alertControllerMessageStr addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, 4)];

[alertControllerMessageStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(0, 4)];

[alertController setValue:alertControllerMessageStr forKey:@"attributedMessage"];

运行结果是这样的~:

2.设置按钮的文字颜色:

//修改按钮

[cancelAction setValue:[UIColor redColor] forKey:@"titleTextColor"];

效果~:

后续:

好了,到这里问题似乎是解决了~。不过,你可能太小看我们产品经理了,。因为我们还需要知道,。这个UIAlertController是在iOS8以后的世界才会出现的,到了iOS7那个灵力稀薄的世界,它直接就会崩溃爆掉了好伐~。正好、、、、我们产品要我去iOS7历练一番~。(要死要死要死)

说真的,到了iOS7我内心几乎是崩溃的~。

由于.....那台传说级的iOS7 iPhone4s测试机,当时刚好不在,于是今天就没有测试,代码写好了~ 暂时是一个猜想,需要后面验证一下。(不行的话我再改咯~)

<验证了~ 没问题~。 直接干~>

//- (void)disabledButtonWithSuperView:(UIView *)superView{

//    for (UIView *subView in superView.subviews) {

//        if (subView.subviews.count > 0) {

//            [self disabledButtonWithSuperView:subView];

//        }

//        if ([subView isKindOfClass:[UIButton class]]) {

//            UIButton *button = (UIButton*)subView;

//            [button setTitleColor:_333333 forState:UIControlStateNormal];

//        }

//    }

//}

(第一次用简书,是在不熟- - 这排版我也是醉了。只有加上无敌注释才会按着代码的排版来。有会玩儿的大神求传授一下怎么能用简书写的无比高大上)

最后,由于度娘女神那发现的,。所以有些东西是摘自别人那的,。

涉及原文链接:http://www.jianshu.com/p/51949eec2e9c

希望对大家有些帮助~ 共同修炼~ 早日飞升。

另外关于UIAlertController和UIAlertView以及UIActionSheet的iOS7、8适配,将会在后面再写一篇,详细介绍我的解决方法。

.

上一篇下一篇

猜你喜欢

热点阅读