iOS Alert系统弹框修改标题及按钮颜色
怪物背景:
事情的经过是这样的,公司项目里需要一个弹框具有灰色按钮,而且不可点。本来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适配,将会在后面再写一篇,详细介绍我的解决方法。
.