一喻旷、源起
從2020年以后,蘋果公司開始禁止使用lunchImage.進行開屏啟動荠雕,這樣的話湃望,對于從業(yè)者的我們只能選擇通過使用lunchScreen.xib或者lunch.storyboard.來展示啟動頁。
二院喜、問題
這樣通過xib來設(shè)置啟動頁的話亡蓉,避免不了會遇到適配的問題,這里我們先不聊適配這個話題喷舀。今天要說的是緩存的問題砍濒。 因為這個啟動頁,會因為需求而改變硫麻,甚至直接換成另一套啟動圖爸邢。當(dāng)我們手動在xib中去改動這些的時候,這時候問題便出現(xiàn)了拿愧。
三杠河、后果
每當(dāng)我在我的iOS應(yīng)用程序中修改了啟動屏幕LaunchScreen.storyboad中的某些內(nèi)容時,我都會遇到一個問題:系統(tǒng)會緩存啟動圖像浇辜,即使刪除了該應(yīng)用程序券敌,它實際上也很難清除原來的緩存
有時我修改了LaunchScreen.storyboad,刪除應(yīng)用程序并重新啟動柳洋,它顯示了新的LaunchScreen.storyboad待诅,但LaunchScreen.storyboad中引用的任何圖像都不會顯示,從而使啟動屏幕顯得不正常熊镣。
四卑雁、解決方法
今天,我在應(yīng)用程序的容器中進行了一些挖掘绪囱,發(fā)現(xiàn)該Library文件夾中有一個名為的文件夾SplashBoard测蹲,該文件夾是啟動屏幕緩存的存儲位置。
因此毕箍,要完全清除應(yīng)用程序的啟動屏幕緩存弛房,您所需要做的就是在應(yīng)用程序內(nèi)部運行以下代碼(我已將該代碼打包到UIApplication的擴展中):
OC代碼,創(chuàng)建一個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];