使用lunchScreen.xib清楚之前的缓存

一、源起

从2020年以后,苹果公司开始禁止使用lunchImage.进行开屏启动,这样的话,对于从业者的我们只能选择通过使用lunchScreen.xib或者lunch.storyboard.来展示启动页。

二、问题

这样通过xib来设置启动页的话,避免不了会遇到适配的问题,这里我们先不聊适配这个话题。今天要说的是缓存的问题。 因为这个启动页,会因为需求而改变,甚至直接换成另一套启动图。当我们手动在xib中去改动这些的时候,这时候问题便出现了。

三、后果

每当我在我的iOS应用程序中修改了启动屏幕LaunchScreen.storyboad中的某些内容时,我都会遇到一个问题:系统会缓存启动图像,即使删除了该应用程序,它实际上也很难清除原来的缓存。

有时我修改了LaunchScreen.storyboad,删除应用程序并重新启动,它显示了新的LaunchScreen.storyboad,但LaunchScreen.storyboad中引用的任何图像都不会显示,从而使启动屏幕显得不正常。

四、解决方法

今天,我在应用程序的容器中进行了一些挖掘,发现该Library文件夹中有一个名为的文件夹SplashBoard,该文件夹是启动屏幕缓存的存储位置。
因此,要完全清除应用程序的启动屏幕缓存,您所需要做的就是在应用程序内部运行以下代码(我已将该代码打包到UIApplication的扩展中):
文章提到的缓存目录在沙盒下如下图所示:


使用lunchScreen.xib清楚之前的缓存_第1张图片
f1.png

OC代码,创建一个UIApplication 的 Category

     

#import 

@interface UIApplication (LaunchScreen)
- (void)clearLaunchScreenCache;
@end
#import "UIApplication+LaunchScreen.h"

@implementation UIApplication (LaunchScreen)
- (void)clearLaunchScreenCache {
    NSError *error;
    [NSFileManager.defaultManager removeItemAtPath:[NSString stringWithFormat:@"%@/Library/SplashBoard",NSHomeDirectory()] error:&error];
    if (error) {
        NSLog(@"Failed to delete launch screen cache: %@",error);
    }
}
@end

OC使用方法
在Appdelegete 的didLunch函数中直接调用 清楚每次的缓存

#import "UIApplication+LaunchScreen.h"
[UIApplication.sharedApplication clearLaunchScreenCache];

你可能感兴趣的:(使用lunchScreen.xib清楚之前的缓存)