iOS动态改变App Icon

从iOS10.3开始,苹果就支持了开发者通过编程来动态改变app的icon。这里简单介绍下如何动态改变app icon。

首先要了解一下三个属性/api:

var supportsAlternateIcons: Bool { get }
var alternateIconName: String? { get }
func setAlternateIconName(String?, completionHandler: ((Error?) -> Void)? = nil)
  • supportsAlternateIcons:只读属性,它用来检测app是否支持修改icon。我们需要在info.plist里把它设置为true。
  • alternateIconName:只读属性,当前使用的icon名称。
  • setAlternateIconName:设置显示的icon,如果值为nil,那么它会显示主icon。

环境准备

把icon的图片放置在项目的目录下(注意:不要把icon的图片放在Assets目录里)

目录示例:pichu.png, pikachu.png 和raichu.png

设置info.plist

设置info.plist内容如下:

  1. 添加icon文件到Information Property List
  2. 添加字典CFBundleAlternateIcons
  3. 在CFBundleAlternateIcons下添加三个字典,对应为:pichu,pikachua和raichu。
  4. 每个字典添加属性:UIPrerenderedIcon 和 CFBundleIconFiles

配置示例如下:

代码示例

这里假设有三个按钮,点击一个按钮会切换到对应的icon:

// icon变为"pichu"
@IBAction func pichuButtonDidTap(_ sender: UIButton) {
  changeIcon(to: "pichu")
}

// icon变为"pikachu"
@IBAction func pikachuButtonDidTap(_ sender: UIButton) {
  changeIcon(to: "pikachu")
}

// icon 变为 "raichu"
@IBAction func raichuButtonDidTap(_ sender: UIButton) {
  changeIcon(to: "raichu")
}

func changeIcon(to iconName: String) {
  guard UIApplication.shared.supportsAlternateIcons else {
    return
  }

  UIApplication.shared.setAlternateIconName(iconName, completionHandler: { (error) in

    if let error = error {
      print("修改icon失败: \(error.localizedDescription)")
    } else {
      print("修改icon成功")
    }
  })
}

这里主要在changeIcon函数里,它概括如下:

  1. 检查supportsAlternateIcons,判断app是否支持修改icon
  2. 调用setAlternateIconName,修改app icon

原文:https://medium.com/ios-os-x-development/dynamically-change-the-app-icon-7d4bece820d2

版权声明:著作权归作者所有。

相关推荐

更改Android App的名称

在AndroidManifest.xml修改android:label可以修改Android应用的名称。<application     android:label="@string/turns_up_in_manage_apps" >     <activity &nb

JavaScript:给动态元素绑定事件

JavaScript给动态添加的元素绑定事件有几种方式:方法一:jQuery使用jQuery.fn.on可以很简单为动态元素绑定事件:$(staticAncestors).on(eventName, dynamicChild, function() {}); staticAncestors:静态的祖先元素选择器eventName:事件名,如click等dynamicC

iTunes 12.7安装ad-hoc app

iTunes升级到12.7后,左侧栏的Apps选项已经去掉了。在iTunes12.7可以参考Manually add items from your computer来安装ad-hoc app。步骤如下:连接设备打开iTunes,在左侧栏找到相应的设备把ad-hoc ipad文件拖入到设备下如图

Xcode 9添加项目的iOS App图标

Xcode 8及之前的版本是可以直接在iTunes Connect上添加App icon。而Xcode 9则是把App icon放置在项目的asset catalog。在Info.plist 添加key CFBundleIconName:<key>CFBundleIconName</key> &