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...
    陽明AGI閱讀 16,003評論 3 119
  • 第一次在007上寫作,很是興奮,不過對于我這種寫作困難戶是不小的挑戰,尋思寫點什么,最后決定寫點近期的感悟。 如果...
    亨利Jones閱讀 217評論 0 0
  • 2018/7/14-21 一、體驗強烈的情緒 令我感受最深的是在高鐵上通過正念感知體驗強烈情緒帶來的沖突及消融。 ...
    唔邪閱讀 500評論 0 0
  • 傍晚回家,路過拐角的店,不經意間就看到它們,安安靜靜地躺在烤箱里,或豐滿,或纖瘦,簡直就像古時溫婉的女子,癡癡地瞧...
    蘇寂然閱讀 701評論 0 0
  • 秋至梧桐庭院樹。 寂寥無數,恰是憂愁賦。 一半離殤一半霧,翩躚飄落為誰去。 離散流觴秋葉訴。 過盡千帆,滄海凄涼渡...
    美食美客閱讀 410評論 0 2