热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS获取AppIconandLaunchImage'sname(app图标和启动图片名字)

这篇文章主要介绍了iOS获取AppIconandLaunchImage'sname(app图标和启动图片名字)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习

这篇文章主要介绍了iOS获取AppIcon and LaunchImage’s name(app图标和启动图片名字)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧

在某种场景下,可能我们需要获取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,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; //设备启动图片为控制器的背景图片 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=  ( AppIcon29x来源gaodai#ma#com搞@@代~&码*网29, 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图标和启动图片名字),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对gaodaima编程笔记网站的支持!

以上就是iOS获取AppIcon and LaunchImage’s name(app图标和启动图片名字)的详细内容,更多请关注gaodaima编程笔记其它相关文章!



推荐阅读
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
author-avatar
樊赜思
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有