iOS 10.3 中的备用图标

Alternate Icon in iOS 10.3

我在 iOS 10.3 中有关于如何设置备用图标的信息,在 Info.plist 中添加了密钥。但是,我不确定每个替代品需要哪些尺寸。我现在使用资产文件夹,必须放入大约 12 个不同大小的聚光灯图标,不同的 iphone 和 ipad 大小等。备用图标的规则是什么?

要更改您需要使用的图标 set​Alternate​Icon​Name(_:​completion​Handler:​)

您需要将 CFBundleAlternateIcons 放在 Info.plist 中。备用图标大小与主图标大小相同 icon sizes listed here

您可以在 Contents of the CFBundleAlternateIcons Dictionary Entry

中阅读完整文档


编辑: 这段摘自上述文档 icon sizes listed here

Provide visually consistent alternate icons in all necessary sizes. Like your primary app icon, each alternate app icon is delivered as a collection of related images that vary in size. When the user chooses an alternate icon, the appropriate sizes of that icon replace your primary app icon on the Home screen, in Spotlight, and elsewhere in the system. To ensure that alternate icons appear consistently throughout the system—the user shouldn't see one version of your icon on the Home screen and a completely different version in Settings, for example—provide them in the same sizes you provide for your primary app icon (with the exception of the large App Store icon). See App Icon Sizes

由于最大的问题是如何配置图标图片来源,info.plist,here是一个示例,告诉你如何在iOS 10.3中设置备用图标,实现于Swift3.

  1. 如果您的应用不支持iPad,图标图片来源可以是60pt@2x和60pt@3x(120x120 180x180),20pt 29pt和40pt都可以从 60pt 图像生成。因此,您的备用图标图像源也应该是 60pt@2x 和 60pt@3x,如果它是 iPhone-only 应用程序。如果您的应用支持 iPad Pro.

  2. ,它应该是 83.5pt
  3. 就像您在图片中看到的那样,替代图标图像应该作为 png 文件(我示例中的 blackBgColor 图像)添加到项目中,但不添加到Assets.xcassets.

  4. info.plist中备用图标的配置有点复杂,所以如果这是你第一次这样做,我建议你将我的代码复制到plist中。而且,请注意我的备用图标名称 (blackBgColor) 在 plist 中使用了两次,如果您要根据我的版本更改图标名称,请确保您在两个文件中都更改了名称两个地方。

    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundleAlternateIcons</key>
        <dict>
            <key>blackBgColor</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>blackBgColor</string>
                </array>
                <key>UIPrerenderedIcon</key>
                <false/>
            </dict>
        </dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>AppIcon60x60</string>
            </array>
        </dict>
    </dict>
    

现在,ViewController 中的代码将变得简单。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func changeAppIcon(_ sender: Any) {

        if UIApplication.shared.supportsAlternateIcons {
            print("you can change this app's icon")
        }else {
            print("you cannot change this app's icon")
            return
        }

        if let name = UIApplication.shared.alternateIconName {
            // CHANGE TO PRIMARY ICON
            UIApplication.shared.setAlternateIconName(nil) { (err:Error?) in
                print("set icon error:\(String(describing: err))")
            }
            print("the alternate icon's name is \(name)")
        }else {
            // CHANGE TO ALTERNATE ICON
            UIApplication.shared.setAlternateIconName("blackBgColor") { (err:Error?) in
                print("set icon error:\(String(describing: err))")
            }
        }
    }

}