1. 程式人生 > >iOS10.0以下版本出現“白屏”

iOS10.0以下版本出現“白屏”

這近在開發專案中遇到奇怪的問題,測試說我的安裝包安裝時出現白屏了,可以載入網路,就是顯示不出來UI,由於在開發中使用模擬器和自己的手機並沒有出現這種白屏問題,遇到問題還是很懵的,拿測試手機在Xcode上除錯,一切執行正常,就是不顯示UI,於是想到是不是手機版本問題,測試手機是iOS9.3的系統,我的是10.3,這很大可能就是系統版本導致在兩個手機上執行結果不一樣,但是是什麼原因導致執行結果不一樣呢,是哪部分程式碼不相容了,陷入了沉思,想了很久也沒想出頭緒。

於是我搭了測試專案,從三級控制器開始除錯,結果一下中獎,因為專案中的tabBar是有弧角的,所以要用自定義圖片,這個不影響白屏,影響的是自定義tabBar要帶陰影效果,於是給UIImageView加了陰影:

imageView.layer.shadowColor = RGB(19, 30, 36).CGColor;
        imageView.layer.shadowOffset = CGSizeMake(0, 0);
        imageView.layer.shadowOpacity = 0.5;
        imageView.layer.shadowRadius = 10.0;

        CGRect rect = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
        UIGraphicsBeginImageContext(rect.size
); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]); CGContextFillRect(context, rect); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [self setBackgroundImage:img];
[self setShadowImage:img];

問題就出在這段加陰影的程式碼上,iOS10.0以下,自定義tabBar加了陰影效果就出現白屏了,所以為了不影響專案也同時不影響設計,在這裡加陰影時根據系統版本判斷一下,iOS10.0以下版本就不要新增陰影功能了。自定義tabBar,新增imageView控制元件,控制元件高度大於tabBar高度時,在iOS10.0以上是不顯示tabBar上的系統細線的,iOS10.0以下是顯示系統細線,去細線程式碼:

[self.tabBar setShadowImage:[UIImage new]];