iOS獲取AppIcon and LaunchImage's name(app圖標(biāo)和啟動(dòng)圖片名字)
在某種場(chǎng)景下,可能我們需要獲取app的圖標(biāo)名稱和啟動(dòng)圖片的名稱。比如說(shuō)app在前臺(tái)時(shí),收到了遠(yuǎn)程通知但是通知欄是不會(huì)有通知提醒的,這時(shí)我想做個(gè)模擬通知提示,需要用到icon名稱;再比如在加載某個(gè)控制器時(shí),想設(shè)置該控制器的背景圖片為啟動(dòng)圖片,需要用到啟動(dòng)圖片名稱。
而事實(shí)上icon圖片放在系統(tǒng)AppIcon文件夾里,啟動(dòng)圖片放在系統(tǒng)LaunchImage文件夾里,取這些圖片的名稱和其他一般資源圖片名稱不一樣。
為了方便舉例子,咱們先簡(jiǎn)單粗暴點(diǎn)
假設(shè)當(dāng)前項(xiàng)目只支持iPhone設(shè)備,并且只支持豎屏;而且當(dāng)前項(xiàng)目里已經(jīng)設(shè)置好了AppIcon圖標(biāo)和啟動(dòng)圖片,
如何獲取icon圖標(biāo)名稱和啟動(dòng)圖片名稱呢 ?
上代碼和打印日志:
/** 獲取app的icon圖標(biāo)名稱 */ - (void)getAppIconName{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //獲取app中所有icon名字?jǐn)?shù)組 NSArray *iconsArr = infoDict[@"CFBundleIcons"][@"CFBundlePrimaryIcon"][@"CFBundleIconFiles"]; //取最后一個(gè)icon的名字 NSString *iconLastName = [iconsArr lastObject]; //打印icon名字 NSLog(@"iconsArr: %@", iconsArr); NSLog(@"iconLastName: %@", iconLastName); /* 打印日志: iconsArr: ( AppIcon29x29, AppIcon40x40, AppIcon60x60 ) iconLastName: AppIcon60x60 */ } /** 獲取app的啟動(dòng)圖片名稱,并設(shè)置為本控制器背景圖片 */ - (void)getLaunchImageName{ NSString *launchImageName = @""; //啟動(dòng)圖片名稱變量 CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; //獲取與當(dāng)前設(shè)備匹配的啟動(dòng)圖片名稱 if (screenHeight == 480){ //4,4S launchImageName = @"LaunchImage-700"; } else if (screenHeight == 568){ //5, 5C, 5S, iPod launchImageName = @"LaunchImage-700-568h"; } else if (screenHeight == 667){ //6, 6S launchImageName = @"LaunchImage-800-667h"; } else if (screenHeight == 736){ // 6Plus, 6SPlus launchImageName = @"LaunchImage-800-Landscape-736h"; } if (launchImageName.length < 1) return; //設(shè)備啟動(dòng)圖片為控制器的背景圖片 UIImage *img = [UIImage imageNamed:launchImageName]; self.view.backgroundColor = [UIColor colorWithPatternImage:img]; }
打印當(dāng)前只支持iPhone設(shè)備并且只支持豎屏場(chǎng)景下的所有啟動(dòng)圖片信息:
/** 打印app里面所有啟動(dòng)圖片名稱信息 */ - (void)printAllLaunchImageInfo{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //獲取所有啟動(dòng)圖片信息數(shù)組 NSArray *launchImagesArr = infoDict[@"UILaunchImages"]; NSLog(@"launchImagesArr: %@", launchImagesArr); /* 打印日志:?jiǎn)?dòng)圖片的名字是固定的 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}"; } ) */ }
看到了,項(xiàng)目AppIcon圖標(biāo)和啟動(dòng)圖片信息,都可以從 [[NSBundle mainBundle] infoDictionary] 獲得,當(dāng)前這里面還包含了app的其他信息如版本、app名稱、設(shè)備類型、支持方向。。。
打印所有信息看看:
/** 打印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 ); } */ }
---------- 接下來(lái)我們?cè)賮?lái)在app既支持iPhone和iPad設(shè)備,又支持橫屏和豎屏?xí)r,AppIcon和LaunchImage是怎樣的以及如何獲取 ---
先上兩張圖,再上測(cè)試代碼:
測(cè)試代碼:
1、獲取AppIcon所有icon圖標(biāo)名稱
/** 支持iPhone和iPad, 獲取app的icon圖標(biāo)名稱 */ - (void)getAppIconName{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //獲取app中所有icon名字?jǐn)?shù)組 NSArray *iconsArr = infoDict[@"CFBundleIcons"][@"CFBundlePrimaryIcon"][@"CFBundleIconFiles"]; //取最后一個(gè)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開發(fā),支持橫屏和豎屏?xí)r,獲取啟動(dòng)圖片,并設(shè)為背景圖片代碼
(iPhone設(shè)備只有在Plus, 即5.5英寸才有豎屏和橫屏兩套圖片,其他4、5、6豎屏橫屏共用一張啟動(dòng)圖片)
/** 支持iPhone和iPad, 支持橫屏、豎屏, 獲取app的啟動(dòng)圖片名稱,并設(shè)置為本控制器背景圖片 */ - (void)getLaunchImageName{ NSString *launchImageName = @""; //啟動(dòng)圖片名稱變量 CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; //屏幕高度 CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width; //屏幕寬度 //設(shè)備界面方向 UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; BOOL isPortrait = UIInterfaceOrientationIsPortrait(orientation);// 是否豎屏 BOOL isLandscape = UIInterfaceOrientationIsLandscape(orientation);//是否橫屏 //獲取與當(dāng)前設(shè)備匹配的啟動(dòng)圖片名稱 //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; //設(shè)備啟動(dòng)圖片為控制器的背景圖片 UIImage *img = [UIImage imageNamed:launchImageName]; self.view.backgroundColor = [UIColor colorWithPatternImage:img]; }
3、打印出所有啟動(dòng)圖片信息
/** 打印app里面所有啟動(dòng)圖片名稱信息 */ - (void)printAllLaunchImageInfo{ NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; //獲取所有啟動(dòng)圖片信息數(shù)組 NSArray *launchImagesArr = infoDict[@"UILaunchImages"]; NSLog(@"launchImagesArr: %@", launchImagesArr); /* 打印日志:?jiǎn)?dòng)圖片的名字是固定的 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圖標(biāo)和啟動(dòng)圖片名字),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot淺析安全管理之Spring Security配置
安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會(huì)發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會(huì)出現(xiàn)問(wèn)題,這篇文章主要介紹了SpringBoot安全管理Spring Security基本配置2022-08-08Java cookie和session會(huì)話技術(shù)介紹
session的工作原理和cookie非常類似,在cookie中存放一個(gè)sessionID,真實(shí)的數(shù)據(jù)存放在服務(wù)器端,客戶端每次發(fā)送請(qǐng)求的時(shí)候帶上sessionID,服務(wù)端根據(jù)sessionID進(jìn)行數(shù)據(jù)的響應(yīng)2023-04-04SpringBoot環(huán)境下junit單元測(cè)試速度優(yōu)化方式
這篇文章主要介紹了SpringBoot環(huán)境下junit單元測(cè)試速度優(yōu)化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java Builder模式實(shí)現(xiàn)原理及優(yōu)缺點(diǎn)解析
這篇文章主要介紹了Java Builder模式實(shí)現(xiàn)原理及優(yōu)缺點(diǎn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10SpringData關(guān)鍵字查詢實(shí)現(xiàn)方法詳解
這篇文章主要介紹了SpringData關(guān)鍵字查詢實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08scala當(dāng)中的文件操作和網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法
這篇文章主要介紹了scala當(dāng)中的文件操作和網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Gradle環(huán)境下導(dǎo)出Swagger為PDF的步驟詳解
這篇文章主要介紹了Gradle環(huán)境下導(dǎo)出Swagger為PDF的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06