美文网首页iOS开发(OC)iOS 功能类
iOS13---使用lunchScreen.xib清除之前的缓存

iOS13---使用lunchScreen.xib清除之前的缓存

作者: 小緈福 | 来源:发表于2020-04-02 11:43 被阅读0次

一、源起

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

二、问题

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

三、后果

每当我在我的iOS应用程序中修改了启动屏幕LaunchScreen.storyboad中的某些内容时,我都会遇到一个问题:系统会缓存启动图像,即使删除了该应用程序,它实际上也很难清除原来的缓存
有时我修改了LaunchScreen.storyboad,删除应用程序并重新启动,它显示了新的LaunchScreen.storyboad,但LaunchScreen.storyboad中引用的任何图像都不会显示,从而使启动屏幕显得不正常。

四、解决方法

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

文章提到的缓存目录在沙盒下如下图所示: 4982523-f0c2b54480fa5ebc.png

OC代码,创建一个UIApplication 的 Category

#import <UIKit/UIKit.h>

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

相关文章

网友评论

    本文标题:iOS13---使用lunchScreen.xib清除之前的缓存

    本文链接:https://www.haomeiwen.com/subject/ulztphtx.html