iOS 10.3新特性之动态更换图标

iOS 10.3增加了动态更换图标的功能。这样我们就可以在不经过App Store更新图标。

实现

  • 满足手机系统在iOS 10.3或者之上
  • supportsAlternateIcons这个布尔值为yes
  • Info.plist中增加所需改变的图标
  • 在项目中添加素材,注意不要添加到Assets.xcassets
  • 以上基础上调用setAlternateIconName:alternateIconName completionHandler:

分析

supportsAlternateIcons :在苹果官方的文档中解释如下:

/*
A Boolean value indicating whether the app is allowed to change its icon.
*/
@property(readonly, nonatomic) BOOL supportsAlternateIcons;

解释:一个布尔值,表示该应用是否允许更改其图标。

并且这个值当系统允许你改变你的应用的图标时才会出现。且你需要声明你的应用的其他图标,将它们包含在你的应用信息的CFBundleAlternateIcons图标键中Info.plist文件。

setAlternateIconName:completionHandler: :这是一个自带Block回调的方法,通过传递你info中设置的icon名来改变图标。

[[UIApplication sharedApplication]setAlternateIconName:iconName completionHandler:^(NSError * error){
 NSLog(@"error %@",error);
}];

当走到error回调的时候该参数包含指示发生的错误对象,且交流符号属性的值保持不变。

Info.plist

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>图标</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>文件名</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>AppIcon-49x49</string>
        </array>
    </dict>
</dict>
Info.plist
这里我去搜索一下UIPrerenderedIcon这个布尔的意思,解释如下:
Key Xcode name Summary
UIPrerenderedIcon “Icon already includes gloss effects” Specifies whether the app’s icon already includes a shine effect. See UIPrerenderedIcon for details.

指定该应用的图标是否已经包含了一个发光效果,所以默认选择No即可~

方法调用

#pragma mark - 更换图标
- (void)setUpChangeIcon:(NSString *)iconName
{
    if (@available(iOS 10.3, *)) { //10.3以上系统支持跟换图标
        
        if ([[UIApplication sharedApplication] supportsAlternateIcons]) {

            [[UIApplication sharedApplication]setAlternateIconName:iconName completionHandler:^(NSError * error){
                NSLog(@"error %@",error);
            }];
        }
    } else {
        NSLog(@"手机系统不支持更换图标~");
    }
}
演示GIF
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容