iOS 10.3 開(kāi)放了更換 app 圖標(biāo)的 API狡忙,核心方法是下面這個(gè):
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
NSLog(@"error = %@", error.localizedDescription);
}];
這是官方文檔丽柿,但是你還需要在 info.plist 里面填一些東西才能讓它起作用,這部分官方注釋內(nèi)容在這里。
但 info.plist 如何填寫(xiě)這部分讀起來(lái)還是有些晦澀驳概,一時(shí)可能搞不清楚如何操作剔蹋,下面做個(gè)示范旅薄。
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>Test1</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Test1</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>Test2</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Test2</string>
</array>
</dict>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon60x60</string>
</array>
</dict>
</dict>
如圖,Primary Icon 字段寫(xiě)為 AppIcon60x60 是因?yàn)檫@里 xcassets 里面我只導(dǎo)入了 60pt@2x 和 60pt@3x 的圖片資源泣崩,這里選為 60 是因?yàn)閷?duì)于 iPhone少梁,60pt 的圖片資源圖標(biāo)所需最高質(zhì)量,更低分辨率的版本系統(tǒng)會(huì)自動(dòng)壓縮以展示矫付。
Test1 是我的用于替換原生圖標(biāo)的圖片資源凯沪。文件名需要和 info.plist 中保持一致(注意 info.plist 中用到了兩次 "Test1"),同時(shí)這也是你在代碼中設(shè)置圖標(biāo)時(shí)买优,需要給 API 傳入的參數(shù)妨马。同樣是 60pt@2x 和 60pt@3x 的圖片資源,文件不通過(guò) Assets.xcassets 添加進(jìn)來(lái)杀赢,而是直接放到目錄中烘跺。
如果你需要支持 iPad,建議這里使用 83.5pt(iPad Pro)的圖片資源脂崔。另外還有些其他關(guān)于在 iPad 上替換圖標(biāo)的注意事項(xiàng)滤淳,在這里有說(shuō)明,注意我們這里在 info.plist 里面所用的 key 是CFBundleIcons
脱篙,還有另外一個(gè) key 是 CFBundleIcons~ipad
娇钱。
替換圖標(biāo)部分的代碼就超級(jí)簡(jiǎn)單了:
-(void)setIcon:(UISegmentedControl *)sender
{
switch (sender.selectedSegmentIndex) {
case 0:
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
NSLog(@"error = %@", error.localizedDescription);
}];
break;
case 1:
[[UIApplication sharedApplication] setAlternateIconName:@"Test1" completionHandler:^(NSError * _Nullable error) {
NSLog(@"error = %@", error.localizedDescription);
}];
break;
case 2:
[[UIApplication sharedApplication] setAlternateIconName:@"Test2" completionHandler:^(NSError * _Nullable error) {
NSLog(@"error = %@", error.localizedDescription);
}];
break;
default:
break;
}
}
寫(xiě)在最后:國(guó)外的app如NHL、MLB.com At Bat已經(jīng)集成到項(xiàng)目中了绊困,有興趣的可以下載下來(lái)看看文搂。