一、源起
從2020年以后梢褐,蘋果公司開(kāi)始禁止使用lunchImage.進(jìn)行開(kāi)屏啟動(dòng)旺遮,這樣的話赵讯,對(duì)于從業(yè)者的我們只能選擇通過(guò)使用lunchScreen.xib或者lunch.storyboard.來(lái)展示啟動(dòng)頁(yè)。
二耿眉、問(wèn)題
這樣通過(guò)xib來(lái)設(shè)置啟動(dòng)頁(yè)的話边翼,避免不了會(huì)遇到適配的問(wèn)題,這里我們先不聊適配這個(gè)話題鸣剪。今天要說(shuō)的是緩存的問(wèn)題组底。 因?yàn)檫@個(gè)啟動(dòng)頁(yè),會(huì)因?yàn)樾枨蠖淖兛鸷В踔林苯訐Q成另一套啟動(dòng)圖债鸡。當(dāng)我們手動(dòng)在xib中去改動(dòng)這些的時(shí)候,這時(shí)候問(wèn)題便出現(xiàn)了铛纬。
三厌均、后果
每當(dāng)我在我的iOS應(yīng)用程序中修改了啟動(dòng)屏幕LaunchScreen.storyboad中的某些內(nèi)容時(shí),我都會(huì)遇到一個(gè)問(wèn)題:系統(tǒng)會(huì)緩存啟動(dòng)圖像饺鹃,即使刪除了該應(yīng)用程序莫秆,它實(shí)際上也很難清除原來(lái)的緩存。
有時(shí)我修改了LaunchScreen.storyboad悔详,刪除應(yīng)用程序并重新啟動(dòng)镊屎,它顯示了新的LaunchScreen.storyboad,但LaunchScreen.storyboad中引用的任何圖像都不會(huì)顯示茄螃,從而使啟動(dòng)屏幕顯得不正常缝驳。
四、解決方法
今天归苍,我在應(yīng)用程序的容器中進(jìn)行了一些挖掘用狱,發(fā)現(xiàn)該Library文件夾中有一個(gè)名為的文件夾SplashBoard,該文件夾是啟動(dòng)屏幕緩存的存儲(chǔ)位置拼弃。
因此夏伊,要完全清除應(yīng)用程序的啟動(dòng)屏幕緩存,您所需要做的就是在應(yīng)用程序內(nèi)部運(yùn)行以下代碼(我已將該代碼打包到UIApplication的擴(kuò)展中):
文章提到的緩存目錄在沙盒下如下圖所示:
OC代碼,創(chuàng)建一個(gè)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函數(shù)中直接調(diào)用 清楚每次的緩存
#import "UIApplication+LaunchScreen.h"
[UIApplication.sharedApplication clearLaunchScreenCache];