美文网首页
更换AppIcon

更换AppIcon

作者: lsh_01 | 来源:发表于2019-02-22 19:52 被阅读0次

    动态更换App图标这件事,在用户里总是存在需求的:有些用户喜欢“美化”自己的手机。至于用户们喜欢美化到什么程度,这得看个人需求。有的用户想定制个性的App图标,那么各大iPhone论坛里都有方法可以不越狱更改App图标;有的用户想让App图标“动”起来(如系统应用时钟),那么不越个狱还真不好办。

    在不重新安装App的情况下,可以实现更新App的图标。但是会弹出一个提示,告知用户当前图标已更换。

    应用场景

    1. 白天/夜间模式切换,在切换App主色调同时切换App图标。
    2. 各类皮肤主题(淘宝就可换肤),附带App图标一块更换。
    3. 利用App图标表达某种特定功能,如Demo中的,提示当前天气。
    4. 图标促销提示,如淘宝京东特定节日:11.11、6.18,提前更换App图标。

    API

    该功能(API)当前只支持iOS10.3以上的系统。

    @interface UIApplication (UIAlternateApplicationIcons)
    // 如果为NO,表示当前进程不支持替换图标
    @property (readonly, nonatomic) BOOL supportsAlternateIcons NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));
    // 传入nil代表使用主图标. 完成后的操作将会在任意的后台队列中异步执行; 如果需要更改UI,请确保在主队列中执行.
    - (void)setAlternateIconName:(nullable NSString *)alternateIconName completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));
    // 如果alternateIconName为nil,则代表当前使用的是主图标.
    @property (nullable, readonly, nonatomic) NSString *alternateIconName NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));
    @end
    

    Info.plist

    CFBundleIcons是 Info.plist 字典里的一个键,它对应的value是个字典。
    CFBundleIcons 里面能够包含的键有:CFBundlePrimaryIcon、CFBundleAlternateIcons、UINewsstandIcon。

    CFBundleAlternateIcons所对应的value是个字典,字典中的键是备用图标的名字。
    每个键对应的value是个包含 CFBundleIconFiles 和 UIPrerenderedIcon 两个键的字典。

    CFBundleIconFiles 的value是字符串或者数组(数组内容也为字符串)。字符串的内容为各尺寸备用图标的名字。

    UIPrerenderedIcon 的value是BOOL值。这个键值所代表的作用在iOS7之后(含iOS7)已失效,我们可以不用关心。

    eg:

    @"CFBundleAlternateIcons" : @{
        @"newAppIcon1" : @{
            @"CFBundleIconFiles" : @[
                @"newAppIcon1_60"
            ],
            @"UIPrerenderedIcon" : NO
        },
        @"newAppIcon2" : @{
            @"CFBundleIconFiles" : @[
                @"newAppIcon2_20",
                @"newAppIcon2_29",
                @"newAppIcon2_40",
                @"newAppIcon2_60"
            ],
            @"UIPrerenderedIcon" : NO
        }
    }
    

    注意事项

    1. 文件扩展名,如@2x,@3x,要么统一不写,那么系统会自动寻找合适的尺寸;要写就需要把每张icon的扩展名写上。
    2. 每个图标,可以只提供最大的一张,其他的由操作系统生成;也可以提供全部所需的尺寸。

    相关文章

      网友评论

          本文标题:更换AppIcon

          本文链接:https://www.haomeiwen.com/subject/dzkyyqtx.html