(0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标
2017-04-06 17:36
1161 查看
iOS新特性: iOS10.3教你如何动态更换APP图标?
1、iOS10.3 开放了更换 app 图标的 API,核心方法是下面这个:
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(
}];
这是官方文档,但是你还需要在
info.plist 里面填一些东西才能让它起作用,这部分官方注释内容在这里。
2、 info.plist 如何填写呢?一时可能搞不清楚如何操作,下面做个实例:
3、具体如下:
[objc]
view plain
copy
print?
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>newIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>newIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon60X60</string>
</array>
</dict>
</dict>
<key>CFBundleIcons</key> <dict> <key>CFBundleAlternateIcons</key> <dict> <key>newIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>newIcon</string> </array> <key>UIPrerenderedIcon</key> <false/> </dict> </dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>Icon60X60</string> </array> </dict> </dict>
如图,
Primary Icon字段写为 Icon60X60 是因为这里 xcassets 里面我只导入了 60pt@2x 和 60pt@3x 的图片资源,这里选为 60 是因为对于 iPhone,60pt 的图片资源图标所需最高质量,更低分辨率的版本系统会自动压缩以展示。
newIcon是我的用于替换原生图标的图片资源。文件名需要和 info.plist 中保持一致(注意 info.plist 中用到了两次 "newIcon"),同时这也是你在代码中设置图标时,需要给 API 传入的参数。同样是 60pt@2x 和 60pt@3x 的图片资源,文件不通过 Assets.xcassets 添加进来,而是直接放到目录中。
如果你需要支持 iPad,建议这里使用 83.5pt(iPad Pro)的图片资源。另外还有些其他关于在 iPad 上替换图标的注意事项,在这里有说明,注意我们这里在
info.plist 里面所用的 key 是
CFBundleIcons,还有另外一个 key 是
CFBundleIcons~ipad。
4、替换图标部分的代码:
[objc]
view plain
copy
print?
- (void)changeAppIcon
{
if ([UIApplication sharedApplication].supportsAlternateIcons) {
NSLog(@"you can change this app's icon");
}else{
NSLog(@"you can not change this app's icon");
return;
}
NSString *iconName = [[UIApplication sharedApplication] alternateIconName];
if (iconName) {
// change to primary icon
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"set icon error: %@",error);
}
NSLog(@"The alternate icon's name is %@",iconName);
}];
}else{
// change to alterante icon
[[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"set icon error: %@",error);
}
NSLog(@"The alternate icon's name is %@",iconName);
}];
}
}
- (void)changeAppIcon { if ([UIApplication sharedApplication].supportsAlternateIcons) { NSLog(@"you can change this app's icon"); }else{ NSLog(@"you can not change this app's icon"); return; } NSString *iconName = [[UIApplication sharedApplication] alternateIconName]; if (iconName) { // change to primary icon [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) { if (error) { NSLog(@"set icon error: %@",error); } NSLog(@"The alternate icon's name is %@",iconName); }]; }else{ // change to alterante icon [[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) { if (error) { NSLog(@"set icon error: %@",error); } NSLog(@"The alternate icon's name is %@",iconName); }]; } }
5、最终效果如下:
Demo:GitHub 喜欢记得star一下哦!
相关文章推荐
- iOS新特性: iOS10.3教你如何动态更换APP图标
- iOS新特性: iOS10.3教你如何动态更换APP图标?(后台切换) 韩俊强的博客
- Xcode-iOS10.3新特性如何动态修改APP图标
- 【iOS 开发】iOS 10.3 如何更换 app 图标
- iOS10.3新特性之动态更换APP图标
- 【iOS 开发】iOS 10.3 如何更换 app 图标
- ios10.3 动态更换app图标
- Swift基础之iOS 10.3 如何更换 app 图标
- iOS 10.3新特性之动态替换App Icon
- iOS开发中动态更换应用图标
- iOS10.3起将支持动态更换app的icon图标
- iOS动态更换App图标
- iOS App开发那些事:如何选择合适的人、规范和框架?
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- iOS开发-APP在waiting for review状态时如何重新上传程序
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- iOS App开发那些事:如何选择合适的人、规范和框架?
- iOS App开发那些事:如何选择合适的人、规范和框架?
- iOS 如何修改App图标和App显示在iPhone的名字
- IOS越狱开发(二)———APP开机自动启动并隐藏图标