0
点赞
收藏
分享

微信扫一扫

[IOS]iOS 12 UIAlertController 层级变动导致的报错


参考:https://www.jianshu.com/p/e85bc5516949

 

问题所在是IOS12 UIAlertController的图层变动了.

首先看代码:

 

UIView *subView1 = alertControl.view.subviews[0];

UIView *subView2 = subView1.subviews[0];

UIView *subView3 = subView2.subviews[0];

UIView *subView4 = subView3.subviews[0];

UIView *subView5 = subView4.subviews[0];
//IOS12 has a more uiview in subView5.subviews
UILabel *titleView = subView5.subviews[0];
UILabel *messageView = subView5.subviews[1];
if ([titleView isMemberOfClass:[UIView class]]) {
titleView = subView5.subviews[1];
messageView = subView5.subviews[2];
}

titleView.textAlignment = NSTextAlignmentLeft;
messageView.textAlignment = NSTextAlignmentLeft;

 

 本来这里:

UILabel *titleView = subView5.subviews[0];
UILabel *messageView = subView5.subviews[1];

 是没有问题的,但是我们在ios12打印图层发现:

2018-10-22 17:13:55.718670+0800 HKTSmartHome[1969:415473] subviews  (
"<UIView: 0x14de7b850; frame = (0 0; 0 0); clipsToBounds = YES; layer = <CALayer: 0x28012bae0>>",
"<UILabel: 0x14de8adc0; frame = (0 0; 0 0); text = 'Are you sure you want to ...'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2822529e0>>",
"<UILabel: 0x14de7bc50; frame = (0 0; 0 0); text = 'Your Internet connection ...'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x282252c10>>",
"<UIView: 0x14de85530; frame = (0 0; 0 0); clipsToBounds = YES; layer = <CALayer: 0x28012bf40>>",
"<UIView: 0x14de7bf40; frame = (0 0; 0 0); clipsToBounds = YES; layer = <CALayer: 0x28012bf20>>"
)

 第五层的subviews数组里面[0]是UIView而不是UILabel,发现是多了一个图层了,这就导致原来的居左布局报错了.

发现了问题,修改也很简单,就是像上面的代码,把index改成[1]就可以了,并且做一个类型判断,让IOS12以下的机型用回原来的设置.

 

补充1:类型判断:

// 新建一个Dog对象,其中Dog是继承自Animal的
Dog *dog = [[Dog alloc]init];

// isMemberOfClass 判断是否为本类
BOOL isDog = [dog isMemberOfClass:[Dog class]]; // 返回YES
// isKindOfClass 判断是否为本类或者子类
BOOL isAnimal = [dog isKindOfClass:[Animal class]]; // 返回YES

NSLog(@"%@",dog.class); // 打印dog的类名

 补充2:系统判断:

NSString *version= [UIDevice currentDevice].systemVersion;

if(version.doubleValue >=12.0) {

// 针对 12.0 以上的iOS系统进行处理

}else{

// 针对 12.0 以下的iOS系统进行处理

}

 

举报

相关推荐

0 条评论