这可以将替代图标应用于iOS应用程序吗?

时间:2017-01-31 06:25:39

标签: ios uiapplication

我需要根据地区更改应用图标,这可能吗?

2 个答案:

答案 0 :(得分:35)

是的,这可能是因为 iOS 10.3

首先,您需要在Info.plist文件中定义所有替代图标,但您无法动态获取它们。

例如,在这里我们定义了两个替代图标:" de"和" fr":

<key>CFBundleIcons</key>
 <dict>
  <key>CFBundleAlternateIcons</key>
  <dict>
   <key>de</key>
   <dict>
    <key>CFBundleIconFiles</key>
    <array>
     <string>ic_de</string>
    </array>
    <key>UIPrerenderedIcon</key>
    <false/>
   </dict>
   <key>fr</key>
   <dict>
    <key>CFBundleIconFiles</key>
    <array>
     <string>ic_fr</string>
    </array>
    <key>UIPrerenderedIcon</key>
    <false/>
   </dict>
  </dict>
  <key>CFBundlePrimaryIcon</key>
  <dict>
   <key>CFBundleIconFiles</key>
   <array>
    <string>ic_none</string>
   </array>
  </dict>
 </dict>

然后,您可以根据自己喜欢的任何内容(游戏进度,天气状况,高级用户等)设置图标名称。要更改图标,请使用:

UIApplication.shared.setAlternateIconName("de") { (error) in
    if let error = error {
        print("err: \(error)")
        // icon probably wasn't defined in plist file, handle the error
    }
}

结果:

Gif showing the icon changing in response to a segmented control

gif来自a Medium article by Julien Quéré

答案 1 :(得分:3)

10.3(测试版)

中提供此功能
  

讨论   使用此方法可将应用的图标更改为其主要图标或其中一个备用图标。仅当supportsAlternateIcons属性的值为true时,才能更改图标。

     

您必须使用应用的Info.plist文件的CFBundleIcons密钥声明应用的主要和备用图标。有关如何为应用程序配置备用图标的信息,请参阅“信息属性列表键参考”中的CFBundleIcons键说明。

看看:

apple documentation