天天看點

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

這近在開發項目中遇到奇怪的問題,測試說我的安裝包安裝時出現白屏了,可以加載網絡,就是顯示不出來UI,由于在開發中使用模拟器和自己的手機并沒有出現這種白屏問題,遇到問題還是很懵的,拿測試手機在Xcode上調試,一切運作正常,就是不顯示UI,于是想到是不是手機版本問題,測試手機是iOS9.3的系統,我的是10.3,這很大可能就是系統版本導緻在兩個手機上運作結果不一樣,但是是什麼原因導緻運作結果不一樣呢,是哪部分代碼不相容了,陷入了沉思,想了很久也沒想出頭緒。

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

imageView.layer.shadowColor = RGB(, , ).CGColor;
        imageView.layer.shadowOffset = CGSizeMake(, );
        imageView.layer.shadowOpacity = ;
        imageView.layer.shadowRadius = ;

        CGRect rect = CGRectMake(, , 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]];