iOS擷取AppIcon and LaunchImage's name(app表徵圖和啟動圖片名字)_java

來源:互聯網
上載者:User

在某種情境下,可能我們需要擷取app的表徵圖名稱和啟動圖片的名稱。比如說app在前台時,收到了遠程通知但是通知欄是不會有通知提醒的,這時我想做個類比通知提示,需要用到icon名稱;再比如在載入某個控制器時,想設定該控制器的背景圖片為啟動圖片,需要用到啟動圖片名稱。

  而事實上icon圖片放在系統AppIcon檔案夾裡,啟動圖片放在系統LaunchImage檔案夾裡,取這些圖片的名稱和其他一般資源圖片名稱不一樣。

  為了方便舉例子,咱們先簡單粗暴點

假設當前項目只支援iPhone裝置,並且只支援豎屏;而且當前項目裡已經設定好了AppIcon表徵圖和啟動圖片,

如何擷取icon表徵圖名稱和啟動圖片名稱呢 ?

上代碼和列印日誌:

/** 擷取app的icon表徵圖名稱 */- (void)getAppIconName{NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];//擷取app中所有icon名字數組NSArray *iconsArr = infoDict[@"CFBundleIcons"][@"CFBundlePrimaryIcon"][@"CFBundleIconFiles"];//取最後一個icon的名字NSString *iconLastName = [iconsArr lastObject];//列印icon名字NSLog(@"iconsArr: %@", iconsArr);NSLog(@"iconLastName: %@", iconLastName);/*列印日誌:iconsArr: (AppIcon29x29,AppIcon40x40,AppIcon60x60)iconLastName: AppIcon60x60*/}/** 擷取app的啟動圖片名稱,並設定為本控制器背景圖片 */- (void)getLaunchImageName{NSString *launchImageName = @""; //啟動圖片名稱變數CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;//擷取與當前裝置匹配的啟動圖片名稱if (screenHeight == 480){ //4,4SlaunchImageName = @"LaunchImage-700";}else if (screenHeight == 568){ //5, 5C, 5S, iPodlaunchImageName = @"LaunchImage-700-568h";}else if (screenHeight == 667){ //6, 6SlaunchImageName = @"LaunchImage-800-667h";}else if (screenHeight == 736){ // 6Plus, 6SPluslaunchImageName = @"LaunchImage-800-Landscape-736h";}if (launchImageName.length < 1) return;//裝置啟動圖片為控制器的背景圖片UIImage *img = [UIImage imageNamed:launchImageName];self.view.backgroundColor = [UIColor colorWithPatternImage:img]; }

列印當前只支援iPhone裝置並且只支援豎屏情境下的所有啟動圖片資訊:

/** 列印app裡面所有啟動圖片名稱資訊 */- (void)printAllLaunchImageInfo{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //擷取所有啟動圖片資訊數組 NSArray *launchImagesArr = infoDict[@"UILaunchImages"]; NSLog(@"launchImagesArr: %@", launchImagesArr); /* 列印日誌:啟動圖片的名字是固定的 launchImagesArr: (  {  UILaunchImageMinimumOSVersion = "8.0";  UILaunchImageName = "LaunchImage-800-Portrait-736h";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{414, 736}";  },  {  UILaunchImageMinimumOSVersion = "8.0";  UILaunchImageName = "LaunchImage-800-Landscape-736h";  UILaunchImageOrientation = Landscape;  UILaunchImageSize = "{414, 736}";  },  {  UILaunchImageMinimumOSVersion = "8.0";  UILaunchImageName = "LaunchImage-800-667h";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{375, 667}";  },  {  UILaunchImageMinimumOSVersion = "7.0";  UILaunchImageName = "LaunchImage-700";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{320, 480}";  },  {  UILaunchImageMinimumOSVersion = "7.0";  UILaunchImageName = "LaunchImage-700-568h";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{320, 568}";  } ) */}

看到了,項目AppIcon表徵圖和啟動圖片資訊,都可以從 [[NSBundle mainBundle] infoDictionary] 獲得,當前這裡面還包含了app的其他資訊如版本、app名稱、裝置類型、支援方向。。。

列印所有資訊看看:

/** 列印app工程配置資訊 */- (void)printInfoDictionary{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; NSLog(@"%@", infoDict); /* 列印日誌: {  BuildMachineOSBuild = 15G31;  CFBundleDevelopmentRegion = en;  CFBundleExecutable = TanTest;  CFBundleIcons = {  CFBundlePrimaryIcon =  {   CFBundleIconFiles =  (   AppIcon29x29,   AppIcon40x40,   AppIcon60x60   );  };  };  CFBundleIdentifier = "net.tan.xxx";  CFBundleInfoDictionaryVersion = "6.0";  CFBundleInfoPlistURL = "Info.plist -- file:///Users/PX/Library/Developer/CoreSimulator/Devices/7020368B-C160-42C0-B3C5-5F958FA82EF5/data/Containers/Bundle/Application/77D8C333-A6AF-4183-B79A-A5BEDCD08E1A/TanTest.app/";  CFBundleName = TanTest;  CFBundleNumericVersion = 16809984;  CFBundlePackageType = APPL;  CFBundleShortVersionString = "1.0";  CFBundleSignature = "????";  CFBundleSupportedPlatforms = (  iPhoneSimulator  );  CFBundleVersion = 1;  DTCompiler = "com.apple.compilers.llvm.clang.1_0";  DTPlatformBuild = "";  DTPlatformName = iphonesimulator;  DTPlatformVersion = "9.3";  DTSDKBuild = 13E230;  DTSDKName = "iphonesimulator9.3";  DTXcode = 0731;  DTXcodeBuild = 7D1014;  LSRequiresIPhoneOS = 1;  MinimumOSVersion = "6.0";  UIDeviceFamily = (  );  UILaunchImageFile = LaunchImage;  UILaunchImages = (  {   UILaunchImageMinimumOSVersion = "8.0";   UILaunchImageName = "LaunchImage-800-Portrait-736h";   UILaunchImageOrientation = Portrait;   UILaunchImageSize = "{414, 736}";  },  {   UILaunchImageMinimumOSVersion = "8.0";   UILaunchImageName = "LaunchImage-800-Landscape-736h";   UILaunchImageOrientation = Landscape;   UILaunchImageSize = "{414, 736}";  },  {   UILaunchImageMinimumOSVersion = "8.0";   UILaunchImageName = "LaunchImage-800-667h";   UILaunchImageOrientation = Portrait;   UILaunchImageSize = "{375, 667}";  },  {   UILaunchImageMinimumOSVersion = "7.0";   UILaunchImageName = "LaunchImage-700";   UILaunchImageOrientation = Portrait;   UILaunchImageSize = "{320, 480}";  },  {   UILaunchImageMinimumOSVersion = "7.0";   UILaunchImageName = "LaunchImage-700-568h";   UILaunchImageOrientation = Portrait;   UILaunchImageSize = "{320, 568}";  }  );  UILaunchStoryboardName = LaunchScreen;  UIMainStoryboardFile = Main;  UIRequiredDeviceCapabilities = (  armv7  );  UISupportedInterfaceOrientations = (  UIInterfaceOrientationPortrait  ); } */}

---------- 接下來我們再來在app既支援iPhone和iPad裝置,又支援橫屏和豎屏時,AppIcon和LaunchImage是怎樣的以及如何擷取 ---

先上兩張圖,再上測試代碼:

測試代碼:

1、擷取AppIcon所有icon表徵圖名稱

/** 支援iPhone和iPad, 擷取app的icon表徵圖名稱 */- (void)getAppIconName{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //擷取app中所有icon名字數組 NSArray *iconsArr = infoDict[@"CFBundleIcons"][@"CFBundlePrimaryIcon"][@"CFBundleIconFiles"]; //取最後一個icon的名字 NSString *iconLastName = [iconsArr lastObject]; //列印icon名字 NSLog(@"iconsArr: %@", iconsArr); NSLog(@"iconLastName: %@", iconLastName); /* 列印日誌(29pt和40pt iPhone和iPad都用到;60pt --- iPhone, 76pt和83.5pt --- iPad): iconsArr: (  AppIcon29x29,  AppIcon40x40,  AppIcon60x60,  AppIcon76x76,  "AppIcon83.5x83.5" ) iconLastName: AppIcon83.5x83.5 */}

2、擷取在支援iPhone和iPad開發,支援橫屏和豎屏時,擷取啟動圖片,並設為背景圖片代碼

(iPhone裝置只有在Plus, 即5.5英寸才有豎屏和橫屏兩套圖片,其他4、5、6豎屏橫屏共用一張啟動圖片)

/**  支援iPhone和iPad, 支援橫屏、豎屏, 擷取app的啟動圖片名稱,並設定為本控制器背景圖片 */- (void)getLaunchImageName{ NSString *launchImageName = @""; //啟動圖片名稱變數 CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; //螢幕高度 CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width; //螢幕寬度 //裝置介面方向 UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; BOOL isPortrait = UIInterfaceOrientationIsPortrait(orientation);// 是否豎屏 BOOL isLandscape = UIInterfaceOrientationIsLandscape(orientation);//是否橫屏 //擷取與當前裝置匹配的啟動圖片名稱 //4、4S 豎屏,橫屏 if ((isPortrait && screenHeight == 480) || (isLandscape && screenWidth == 480)){ launchImageName = @"LaunchImage-700"; } //5、5C、5S、iPod 豎屏,橫屏 else if ((isPortrait && screenHeight == 568) || (isLandscape && screenWidth == 568)){ launchImageName = @"LaunchImage-700-568h"; } //6、6S 豎屏,橫屏 else if ((isPortrait && screenHeight == 667) || (isLandscape && screenWidth == 667)){ launchImageName = @"LaunchImage-800-667h"; } //6Plus、6SPlus豎屏 else if (isPortrait && screenHeight == 736){ launchImageName = @"LaunchImage-800-Portrait-736h"; } //6Plus、6SPlus 橫屏 else if (isLandscape && screenWidth == 736){ launchImageName = @"LaunchImage-800-Landscape-736h"; } //iPad 豎屏 else if (isPortrait && screenHeight == 1024){ launchImageName = @"LaunchImage-700-Portrait"; } //iPad 橫屏 else if (isLandscape && screenWidth == 1024){ launchImageName = @"LaunchImage-700-Landscape"; } if (launchImageName.length < 1) return; //裝置啟動圖片為控制器的背景圖片 UIImage *img = [UIImage imageNamed:launchImageName]; self.view.backgroundColor = [UIColor colorWithPatternImage:img];}

3、列印出所有啟動圖片資訊

/** 列印app裡面所有啟動圖片名稱資訊 */- (void)printAllLaunchImageInfo{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //擷取所有啟動圖片資訊數組 NSArray *launchImagesArr = infoDict[@"UILaunchImages"]; NSLog(@"launchImagesArr: %@", launchImagesArr); /* 列印日誌:啟動圖片的名字是固定的 launchImagesArr: (  {  UILaunchImageMinimumOSVersion = "8.0";  UILaunchImageName = "LaunchImage-800-Portrait-736h";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{414, 736}";  },  {  UILaunchImageMinimumOSVersion = "8.0";  UILaunchImageName = "LaunchImage-800-Landscape-736h";  UILaunchImageOrientation = Landscape;  UILaunchImageSize = "{414, 736}";  },  {  UILaunchImageMinimumOSVersion = "8.0";  UILaunchImageName = "LaunchImage-800-667h";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{375, 667}";  },  {  UILaunchImageMinimumOSVersion = "7.0";  UILaunchImageName = "LaunchImage-700";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{320, 480}";  },  {  UILaunchImageMinimumOSVersion = "7.0";  UILaunchImageName = "LaunchImage-700-568h";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{320, 568}";  },  {  UILaunchImageMinimumOSVersion = "7.0";  UILaunchImageName = "LaunchImage-700-Portrait";  UILaunchImageOrientation = Portrait;  UILaunchImageSize = "{768, 1024}";  },  {  UILaunchImageMinimumOSVersion = "7.0";  UILaunchImageName = "LaunchImage-700-Landscape";  UILaunchImageOrientation = Landscape;  UILaunchImageSize = "{768, 1024}";  } ) */}

4、列印所有配置資訊

/** 列印app工程配置資訊 */- (void)printInfoDictionary{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; NSLog(@"%@", infoDict); /* 列印日誌: { BuildMachineOSBuild = 15G31; CFBundleDevelopmentRegion = en; CFBundleExecutable = TanTest; CFBundleIcons = {  CFBundlePrimaryIcon =  {  CFBundleIconFiles =  (       AppIcon29x29,       AppIcon40x40,       AppIcon60x60,       AppIcon76x76,       "AppIcon83.5x83.5"       );  }; }; CFBundleIdentifier = "net.tan.xxx"; CFBundleInfoDictionaryVersion = "6.0"; CFBundleInfoPlistURL = "Info.plist -- file:///Users/PX/Library/Developer/CoreSimulator/Devices/3246F9AE-1D73-4E4F-8DDF-F591DBE64F63/data/Containers/Bundle/Application/7DD6C793-F882-43CF-9897-1433411289E6/TanTest.app/"; CFBundleName = TanTest; CFBundleNumericVersion = 16809984; CFBundlePackageType = APPL; CFBundleShortVersionString = "1.0"; CFBundleSignature = "????"; CFBundleSupportedPlatforms = (      iPhoneSimulator      ); CFBundleVersion = 1; DTCompiler = "com.apple.compilers.llvm.clang.1_0"; DTPlatformBuild = ""; DTPlatformName = iphonesimulator; DTPlatformVersion = "9.3"; DTSDKBuild = 13E230; DTSDKName = "iphonesimulator9.3"; DTXcode = 0731; DTXcodeBuild = 7D1014; LSRequiresIPhoneOS = 1; MinimumOSVersion = "9.0"; UIDeviceFamily = (    1,    ); UILaunchImageFile = LaunchImage; UILaunchImages = (    {     UILaunchImageMinimumOSVersion = "8.0";     UILaunchImageName = "LaunchImage-800-Portrait-736h";     UILaunchImageOrientation = Portrait;     UILaunchImageSize = "{414, 736}";    },    {     UILaunchImageMinimumOSVersion = "8.0";     UILaunchImageName = "LaunchImage-800-Landscape-736h";     UILaunchImageOrientation = Landscape;     UILaunchImageSize = "{414, 736}";    },    {     UILaunchImageMinimumOSVersion = "8.0";     UILaunchImageName = "LaunchImage-800-667h";     UILaunchImageOrientation = Portrait;     UILaunchImageSize = "{375, 667}";    },    {     UILaunchImageMinimumOSVersion = "7.0";     UILaunchImageName = "LaunchImage-700";     UILaunchImageOrientation = Portrait;     UILaunchImageSize = "{320, 480}";    },    {     UILaunchImageMinimumOSVersion = "7.0";     UILaunchImageName = "LaunchImage-700-568h";     UILaunchImageOrientation = Portrait;     UILaunchImageSize = "{320, 568}";    },    {     UILaunchImageMinimumOSVersion = "7.0";     UILaunchImageName = "LaunchImage-700-Portrait";     UILaunchImageOrientation = Portrait;     UILaunchImageSize = "{768, 1024}";    },    {     UILaunchImageMinimumOSVersion = "7.0";     UILaunchImageName = "LaunchImage-700-Landscape";     UILaunchImageOrientation = Landscape;     UILaunchImageSize = "{768, 1024}";    }    ); UILaunchStoryboardName = LaunchScreen; UIMainStoryboardFile = Main; UIRequiredDeviceCapabilities = (      armv7      ); UISupportedInterfaceOrientations = (      UIInterfaceOrientationPortrait,      UIInterfaceOrientationLandscapeLeft,      UIInterfaceOrientationLandscapeRight      ); }*/}

以上所述是小編給大家介紹的iOS擷取AppIcon and LaunchImage's name(app表徵圖和啟動圖片名字),希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.