美文网首页
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