iOS12上的UIAlertController文字样式修改

随着iOS 12的发布,旧项目在新的Xcode中也涌现出各种各样的疑难杂症。笔者在项目开发过程中即发现UIAlertController也发生了改动。



笔者的项目需求是需要在弹窗的文本信息呈现左对齐样式,结果在iOS 12的设备上奔跑时发现,居然无效!What?经过自己的调试才发现原来是iOS 12底层对UIAlertController的Label视图取值方式变了。。。好吧,那就修改。


这是用于iOS 12之前的版本时写的代码:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"更新提示!" message:tips preferredStyle:UIAlertControllerStyleAlert];
    UIView *subView1 = alert.view.subviews[0];
    UIView *subView2 = subView1.subviews[0];
    UIView *subView3 = subView2.subviews[0];
    UIView *subView4 = subView3.subviews[0];
    UIView *subView5 = subView4.subviews[0];
//分别拿到title 和 message 可以分别设置他们的对齐属性
    UILabel *title = subView5.subviews[0];
    UILabel *message = subView5.subviews[1];

    message.textAlignment = NSTextAlignmentLeft;

经过笔者的调试后发现是subView5的子视图数组内容产生的变化

UILabel *message = subView5.subviews[1];

需修改为

UILabel *message = subView5.subviews[2];

但是这样还要针对不同的iOS系统版本进行判断实属麻烦,所以用以下函数进行调用即可

// view: UIAlertController的视图
// message: 文本内容
// msgAlignment: 文本对齐方式
+ (void)enumrateSubviewsInView:(UIView *)view message:(NSString*)message msgAlignment:(NSTextAlignment)msgAlignment {
    NSArray *subViews = view.subviews;
    if (subViews.count == 0) {
        return;
    }
    for (NSInteger i = 0; i < subViews.count; i++) {
        UIView *subView = subViews[i];
        [self enumrateSubviewsInView:subView message:message msgAlignment:msgAlignment];
        
        if ([subView isKindOfClass:[UILabel class]]) {
            UILabel *label = (UILabel *)subView;
            if ([label.text isEqualToString:message]) {
                label.textAlignment = msgAlignment;
            }
        }
    }
}

只需简单的调用一下函数就好了,这样即可适配iOS 12和之前的系统版本啦!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,020评论 3 119
  • 第一次在007上写作,很是兴奋,不过对于我这种写作困难户是不小的挑战,寻思写点什么,最后决定写点近期的感悟。 如果...
    亨利Jones阅读 223评论 0 0
  • 2018/7/14-21 一、体验强烈的情绪 令我感受最深的是在高铁上通过正念感知体验强烈情绪带来的冲突及消融。 ...
    唔邪阅读 509评论 0 0
  • 傍晚回家,路过拐角的店,不经意间就看到它们,安安静静地躺在烤箱里,或丰满,或纤瘦,简直就像古时温婉的女子,痴痴地瞧...
    苏寂然阅读 706评论 0 0
  • 秋至梧桐庭院树。 寂寥无数,恰是忧愁赋。 一半离殇一半雾,翩跹飘落为谁去。 离散流觞秋叶诉。 过尽千帆,沧海凄凉渡...
    美食美客阅读 420评论 0 2