天天看点

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]];