前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS获取app图标和启动图片名字(AppIcon and LaunchImage's name)

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

作者头像
tandaxia
发布2019-02-25 16:25:11
4.1K0
发布2019-02-25 16:25:11
举报
文章被收录于专栏:谈补锅谈补锅

  在某种场景下,可能我们需要获取app的图标名称和启动图片的名称。比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称;再比如在加载某个控制器时,想设置该控制器的背景图片为启动图片,需要用到启动图片名称。

  而事实上icon图片放在系统AppIcon文件夹里,启动图片放在系统LaunchImage文件夹里,取这些图片的名称和其他一般资源图片名称不一样。

  为了方便举例子,咱们先简单粗暴点

假设当前项目只支持iPhone设备,并且只支持竖屏;而且当前项目里已经设置好了AppIcon图标和启动图片

如何获取icon图标名称和启动图片名称呢 ?

上代码和打印日志:

代码语言:javascript
复制
/** 获取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-Portrait-736h"; 
  } 

   if (launchImageName.length < 1) return; //设备启动图片为控制器的背景图片 

   UIImage *img = [UIImage imageNamed:launchImageName]; 
   self.view.backgroundColor = [UIColor colorWithPatternImage:img];  
}

 打印当前只支持iPhone设备并且只支持竖屏场景下的所有启动图片信息:

代码语言:javascript
复制
/** 打印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名称、设备类型、支持方向。。。

打印所有信息看看:

代码语言:javascript
复制
/** 打印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 =     (
         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}";
             }
         );
         UILaunchStoryboardName = LaunchScreen;
         UIMainStoryboardFile = Main;
         UIRequiredDeviceCapabilities =     (
            armv7
         );
         UISupportedInterfaceOrientations =     (
            UIInterfaceOrientationPortrait
         );
     }
     */
}

----------- 接下来我们再来在app既支持iPhone和iPad设备,又支持横屏和竖屏时,AppIcon和LaunchImage是怎样的以及如何获取  ---------

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

测试代码:

1、获取AppIcon所有icon图标名称

代码语言:javascript
复制
/** 支持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竖屏横屏共用一张启动图片)

代码语言:javascript
复制
/** 
 支持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、打印出所有启动图片信息

代码语言:javascript
复制
/** 打印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、打印所有配置信息

代码语言:javascript
复制
/** 打印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,
                              2
                              );
        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
                                                );
    }*/
    
}

原文链接:http://www.cnblogs.com/tandaxia/p/5820217.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档