根據(jù)蘋果要求2020年4月之后上線的APP都必須使用LaunchScreen適配啟動圖时迫,在研究的過程中發(fā)現(xiàn)還是有一些坑的嘿歌,記錄一下绊困。
環(huán)境: Xcode 11.3 + iPhone 11 + iOS 13.3
使用LaunchScreen設(shè)置啟動圖運行琼腔,之后更新圖片內(nèi)容,發(fā)現(xiàn)運行仍然是舊的圖片铃慷。也試過網(wǎng)上的改名字单芜、刪除sb再新建蜕该、卸載重裝犁柜、卸載+重啟后重裝,只有最后一項是每次都是正確的堂淡,前幾項大多數(shù)情況下還是錯誤的馋缅。
使用模擬器測試發(fā)現(xiàn)扒腕,只有在全面屏?xí)r會更新失效。
以下路徑只在iOS 13系統(tǒng)下測試萤悴,其他設(shè)備的路徑未測試瘾腰。建議執(zhí)行下面操作時每個版本只執(zhí)行一次,否則不知道會不會出現(xiàn)黑白屏之類的情況覆履。測試的時候沒有執(zhí)行下面代碼蹋盆,僅僅是頻繁更換啟動圖就會出現(xiàn)黑白屏。
1.直接刪除截圖存放的路徑目錄
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/SplashBoard/Snapshots"];
[[NSFileManager defaultManager] removeItemAtPath:path error:nil];
可能有些莫名的情況下會會出現(xiàn)黑白屏硝全,這時候使用1
方法并不能完美解決栖雾,使用下面的2
方法測試,即時是出現(xiàn)了黑屏伟众,替換之后也可以顯示正常析藕。
2.替換截圖目錄下文件
// 獲取截圖存儲路徑
NSString *bundleID = [[NSBundle mainBundle].infoDictionary objectForKey:@"CFBundleVersion"];
NSString *shotsDirName = [bundleID stringByAppendingString:@" - {DEFAULT GROUP}"];
NSString *shotsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/SplashBoard/Snapshots"];
shotsPath = [shotsPath stringByAppendingPathComponent:shotsDirName];
NSError *readError = nil;
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:shotsPath error:&readError];
// 遍歷該目錄下截圖文件
for (NSString *fileName in files) {
NSString *path = [shotsPath stringByAppendingPathComponent:fileName];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfFile:path options:NSDataReadingMappedIfSafe error:&error];
if (!error && [data length]) {
UIImage *image = [UIImage imageWithData:data];
if (image) {
UIImage *launchImage = [UIImage imageNamed:@"launch"];
// 設(shè)置圖片尺寸為舊圖尺寸
launchImage = [launchImage imageByResizeToSize:image.size contentMode:UIViewContentModeScaleAspectFit];
// 寫入目錄,替換舊圖
NSData *launchData = UIImagePNGRepresentation(launchImage);
[launchData writeToFile:path atomically:YES];
}
}
}
以上兩種方法都只能保證更新后二次啟動是顯示正確的凳厢,首次啟動沒找到辦法账胧。
然而大多數(shù)人都想要酷炫的啟動,創(chuàng)建出了很多啟動動畫先紫,那么這時候?qū)τ谔O果要求的一張圖適配所有屏幕就可能會產(chǎn)生很多問題治泥,比如圖片在原有的坐標(biāo)上可能發(fā)生偏移,而你也不知道到底偏移了多少遮精。
看到有人提出這樣的方案车摄,原理還是跟之前的LaunchImage一樣,但是不知道這個能不能在蘋果最新的這個規(guī)則下上架仑鸥。此處是鏈接哦
以上僅限于個人只有一個手機吮播,若有其他情況,大家也可以補充眼俊。