iOS LaunchScreen.storyboard啟動圖更新

根據(jù)蘋果要求2020年4月之后上線的APP都必須使用LaunchScreen適配啟動圖,在研究的過程中發(fā)現(xiàn)還是有一些坑的,記錄一下。

環(huán)境: Xcode 11.3 + iPhone 11 + iOS 13.3

使用LaunchScreen設置啟動圖運行,之后更新圖片內容,發(fā)現(xiàn)運行仍然是舊的圖片。也試過網(wǎng)上的改名字、刪除sb再新建、卸載重裝、卸載+重啟后重裝,只有最后一項是每次都是正確的,前幾項大多數(shù)情況下還是錯誤的。

使用模擬器測試發(fā)現(xiàn),只有在全面屏時會更新失效。

以下路徑只在iOS 13系統(tǒng)下測試,其他設備的路徑未測試。建議執(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"];
                // 設置圖片尺寸為舊圖尺寸
                launchImage = [launchImage imageByResizeToSize:image.size contentMode:UIViewContentModeScaleAspectFit];
                // 寫入目錄,替換舊圖
                NSData *launchData = UIImagePNGRepresentation(launchImage);
                [launchData writeToFile:path atomically:YES];
            }
        }
    }

以上兩種方法都只能保證更新后二次啟動是顯示正確的,首次啟動沒找到辦法。

然而大多數(shù)人都想要酷炫的啟動,創(chuàng)建出了很多啟動動畫,那么這時候對于蘋果要求的一張圖適配所有屏幕就可能會產生很多問題,比如圖片在原有的坐標上可能發(fā)生偏移,而你也不知道到底偏移了多少。

看到有人提出這樣的方案,原理還是跟之前的LaunchImage一樣,但是不知道這個能不能在蘋果最新的這個規(guī)則下上架。此處是鏈接哦

以上僅限于個人只有一個手機,若有其他情況,大家也可以補充。

更新:經(jīng)過與蘋果官方開發(fā)人員討論,明確表示這種情況只在開發(fā)模式下頻繁出現(xiàn),在AppStore上不會出現(xiàn)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容