如何清除 iOS APP 的啟動屏幕緩存
本文轉載自微信公眾號「網羅開發」,作者韋弦Zhy 。轉載本文請聯系網羅開發公眾號。
簡介
每當我在我的 iOS 應用程序中修改了 LaunchScreen.storyboad 中的某些內容時,我都會遇到一個問題:
系統會緩存啟動圖像,即使刪除了該應用程序,它實際上也很難清除原來的緩存。
有時我修改了 LaunchScreen.storyboad,刪除應用程序并重新啟動,它顯示了新的 LaunchScreen.storyboad,但 LaunchScreen.storyboad 中引用的任何圖片都不會顯示,從而使啟動屏顯得不正常。
今天,我在應用程序的沙盒中進行了一些挖掘,發現該 Library 文件夾中有一個名為 SplashBoard 的文件夾,該文件夾是啟動屏緩存的存儲位置。
因此,要完全清除應用程序的啟動屏幕緩存,您所需要做的就是在應用程序內部運行以下代碼(已將該代碼擴展到 UIApplication 的中):
- import UIKit
- public extension UIApplication {
- func clearLaunchScreenCache() {
- do {
- try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
- } catch {
- print("Failed to delete launch screen cache: \(error)")
- }
- }
- }
在啟動屏開發過程中,您可以將其放在應用程序初始化代碼中,然后在不修改啟動屏時將其禁用。
這個技巧在啟動屏出問題時為我節省了很多時間,希望也能為您節省一些時間。
使用
- UIApplication.shared.clearLaunchScreenCache()
- 文章提到的緩存目錄在沙盒下如下圖所示:
- 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使用方法
- #import "UIApplication+LaunchScreen.h"
- [UIApplication.sharedApplication clearLaunchScreenCache];