美文网首页
使用lunchScreen.xib清楚之前的缓存

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

作者: 爱笑的猫mi | 来源:发表于2020-01-20 09:43 被阅读0次

    一、源起

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

    二、问题

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

    三、后果

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

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

    四、解决方法

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


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

    相关文章

      网友评论

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

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