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


      在某种场景下,可能我们需要获取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-Portrait-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}";
             }
         )
         */
    }
    View Code

    看到了,项目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 =     (
             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
             );
         }
         */
    }
    View Code

    ----------- 接下来我们再来在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
         */
    }
    View Code

    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];
    }
    View Code

    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}";
             }
         )
         */
    }
    View Code

    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,
                                  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
                                                    );
        }*/
        
    }
    View Code

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

  • 相关阅读:
    hibernate笔记--实体类映射文件"*.hbm.xml"详解
    struts2学习笔记--使用struts2插件实现ajax处理(返回json数据)
    struts2学习笔记--使用servletAPI实现ajax的一个小Demo
    Struts2学习笔记--使用Response下载文件和Struts2的StreamResult文件下载
    struts2学习笔记--上传单个和批量文件示例
    struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
    struts2学习笔记--使用Validator校验数据
    struts2学习笔记--OGNL表达式1
    easyui dialog 扩展load
    easyui filter 过滤时间段
  • 原文地址:https://www.cnblogs.com/tandaxia/p/5820217.html
Copyright © 2020-2023  润新知