iOS13 之后,APP 启动图要求统一使用Launch Screen.storyboard,在提换 launchImage 过程中,发现 APP 启动黑屏,
首先,APP 的启动图片是在首次安装 APP 时储存在缓存中,之后再次覆盖安装等操作是不会清除缓存的, 当在 xcode 调试开发过程中,APP version 变化之后,非常容易出现黑屏现象, 目前总结网上的几个方法:
1.更改启动图名字, 每个版本更改一次图片名字,避免出现 launch和 screen 的字眼
但是这种方法治标不治本,多个分支和多个版本开发时 还是容易出现黑屏
2. 重启手机 (重启 APP 是没用的)
只能保证重启之后是 OK 的
3.图片格式
使用.png 避免使用 jpg
4.工程中的 launchImage 要删除干净
asset 文件中的 launchImage 文件夹要删除
buildSetting 中搜索 launchImage,然后删除调, 不然工程会报错:None of the input catalogs contained a matching launch image set named "LaunchImage".
5.启动图在工程中的位置
为解决黑屏,网上不少人说将图片放在工程的根路径下,但是并不能解决问题, 尽量还是放在Assets.xcassets中
6. 删除缓存的启动图片
APP 在首次安装时,会将启动图保存在缓存中,导致后来每次安装都还是调用缓存的图片, 因此在APP 启动时,手动清除一次缓存图片,根本上解决问题:
首先找到缓存目录:
iOS11:/#AppData/Library/Caches/Snapshots
iOS13:/#AppData/Library/SplashBoard/Snapshots
iOS14:/#AppData/Library/SplashBoard/Snapshots
代码实现清除缓存图片:
- (void)clearLaunchScreenCache {
@try {
NSError *error;
[[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@/Library/Caches/Snapshots",NSHomeDirectory()] error:&error];
if (error) {
NSLog(@"删除cache失败 %@",error);
}
} @catch (NSException *exception) {
NSLog(@"删除cache失败: %@",error);
} @finally {
NSLog(@"成功");
}
}
具体调用位置,请自行决定!