iOS 12系統(tǒng)版本以后,原本用UIAlertController去遍歷圖層獲取UILabel的方法失效,原因是UILabel的圖層位置改變了
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;
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 可以分別設置他們的對齊屬性
NSArray * viewArray = subView5.subviews;
int index = [self getIndex];
UILabel *title = viewArray[index + 0];
UILabel *message = viewArray[index + 1];
message.textAlignment = NSTextAlignmentLeft;
- (int) getIndex{
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
int index;
if ([phoneVersion doubleValue] >= 12.0) {
index = 1;
} else {
index = 0;
}
return index;
}