iOS获取AppIcon and LaunchImage's name(app图标和启动图片名字)

作者:mrr 时间:2022-01-11 02:39:14 

在某种场景下,可能我们需要获取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 =  (
  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是怎样的以及如何获取 ---

先上两张图,再上测试代码:

iOS获取AppIcon and LaunchImage's name(app图标和启动图片名字)

iOS获取AppIcon and LaunchImage's name(app图标和启动图片名字)

iOS获取AppIcon and LaunchImage's name(app图标和启动图片名字)

测试代码:

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图标和启动图片名字)网站的支持!

标签:ios,launchimage,aapicon
0
投稿

猜你喜欢

  • SpringBoot详细讲解视图整合引擎thymeleaf

    2023-12-04 16:31:37
  • 在Java的Struts中判断是否调用AJAX及用拦截 器对其优化

    2023-11-25 00:40:40
  • 关于JWT之token令牌认证登录

    2022-03-16 07:32:58
  • java实现短信验证码5分钟有效时间

    2023-08-30 18:42:26
  • Spring boot2X负载均衡和反向代理实现过程解析

    2023-02-06 04:18:53
  • java结合HADOOP集群文件上传下载

    2022-12-14 23:08:52
  • Javaweb基础入门requse原理与使用

    2021-10-07 20:55:29
  • Spring Boot使用profile如何配置不同环境的配置文件

    2023-11-25 12:52:36
  • C#通过PInvoke调用c++函数的备忘录的实例详解

    2023-11-25 12:53:08
  • Java文件操作之IO流 File类的使用详解

    2023-07-26 00:49:41
  • SrpingDruid数据源加密数据库密码的示例代码

    2021-06-21 03:26:26
  • Java实现List集合转树形结构的示例详解

    2021-11-11 10:48:33
  • c语言动态数组示例

    2023-11-02 22:56:44
  • SpringBoot在IDEA中实现热部署的步骤

    2022-01-14 23:30:02
  • Java重写equals及hashcode方法流程解析

    2023-10-14 06:53:13
  • C#移除所有事件绑定的方法

    2023-07-25 11:00:52
  • Java中的回调

    2023-11-16 01:55:58
  • flutter中使用流式布局示例详解

    2023-08-24 23:49:06
  • Android巧用XListView实现万能下拉刷新控件

    2023-07-25 00:33:03
  • jdbc中class.forname的作用

    2023-04-13 00:56:18
  • asp之家 软件编程 m.aspxhome.com