iOS 10.3 加入了了更換應用圖標的新功能,當應用安裝后摆碉,開發(fā)者可以為應用提供多個應用圖標選擇橄妆。用戶可以自由的在這些圖標之間切換翎迁。這也是 iOS 主屏首次支持應用圖標更換。如下介紹如何更新應用圖標蕴潦。
一像啼、API介紹
UIApplication 的對象方法,set?Alternate?Icon?Name:?completion?Handler:?可以用來更換應用的圖標潭苞,但是還要設置plist文件內(nèi)容忽冻,后面細致講解。
//alternateIconName 參數(shù)是應用圖片名字此疹,如果該參數(shù)是nil,默認是最初圖標的名字
//completionHandler 是回調(diào)僧诚,如果更換圖片成功,error 為nil,否則不為nil蝗碎;
- (void)setAlternateIconName:(NSString *)alternateIconName
completionHandler:(void (^)(NSError *error))completionHandler;
討論
在調(diào)用此方法時湖笨,要用supports?Alternate?Icons 方法,來判斷是否支持換應用圖標蹦骑。另外還要在plist文件中用 CFBundle?Icons 鍵聲明 primary 和 alternate 圖標慈省,如何設置 CFBundle?Icons 鍵,請參考Information Property List Key Reference。
二眠菇、Plist文件的配置
下圖是最初應用的圖標边败。
下圖中是plist 文件的設置,最初圖標的名字 和 更新圖標和名字要一一對應琼锋。
<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>Icon</string>
</array>
</dict>
</dict>
三放闺、代碼實現(xiàn)
如下代碼實現(xiàn)如何更換應用的圖標,主要思路如下
1 系統(tǒng)能否支持更換圖標
2 判斷是否已經(jīng)更新過圖標
3 更新圖標
- (IBAction)changeIcon:(id)sender {
if ([UIApplication sharedApplication].supportsAlternateIcons) {
NSLog(@"U can change icon image");
//應用是否更新過圖標
NSString *iconName = [[UIApplication sharedApplication] alternateIconName];
if (iconName) {
//setAlertnateIconName方法有二個參數(shù)
//第一個參數(shù)是 要換圖標的名字缕坎,如果寫nil,系統(tǒng)默認是最初圖標名字
//第二個參數(shù)是 方法執(zhí)行的回調(diào)
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"errpr = %@",error);
}else{
NSLog(@"suceess");
}
}];
}else{
//換圖標
[[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"errpr = %@",error);
}else{
NSLog(@"suceess");
}
}];
}
}