美文网首页
iOS10.3以上设备 可动态更新icon

iOS10.3以上设备 可动态更新icon

作者: Dolway | 来源:发表于2020-04-21 13:46 被阅读0次

    主icon 可放在Assets.xcassets 不动。

    副icon 配置如图。副 icon 必须放文件夹里打包。

    image

    在 Icon files(iOS 5)内添加一个Key: CFBundleAlternateIcons ,类型为字典,在这个字典里配置我们所有需要动态修改的Icon1(或Icon2 ,自定义icon名称),值为一个字典 。添加数组 :CFBundleIconFiles。然后把图片名全部添加进来

    主icon和两个福icon轮流使用的代码。一般可用于到日期更滑促销或活动的icon

        // 动态icon
        BOOL supportsAlternateIcons = [[UIApplication sharedApplication] supportsAlternateIcons];
        if (supportsAlternateIcons) {
            
            NSString *iconName = nil;
            
            if ([[UIApplication sharedApplication] alternateIconName] == nil) { // 正在使用主icon
                iconName = @"Icon1";
            }else if ([[[UIApplication sharedApplication] alternateIconName] isEqualToString:@"Icon1"]){//
                iconName = @"Icon2";
            }
            [[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
                DLog(@"%@",error);
            }];
        }
    
    
     @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
    

    相关文章

      网友评论

          本文标题:iOS10.3以上设备 可动态更新icon

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