java 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 = (

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是怎样的以及如何获取 ---

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

测试代码:

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图标和启动图片名字),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文链接:https://my.lmcjl.com/post/13826.html

展开阅读全文

4 评论

留下您的评论.