iOS 10.3中的备用图标

use*_*452 18 icons objective-c info.plist ios swift

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

这不是重复的可能性.它询问您是否必须包含备用图标的每个尺寸

Kai*_* Xu 21

因为最大的问题是如何配置的图标图像源的info.plist,这里是一个样本来告诉你如何设置在iOS的10.3交替图标,在斯威夫特3实现.

Assets.xcassets info.plist中

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

  2. 与您在图片中看到的一样,备用图标图像应作为png文件(我的示例中的blackBgColor图像)添加到项目中,但不会添加到Assets.xcassets中.

  3. info.plist中备用图标的配置有点复杂,所以如果这是你第一次这样做,我建议你用plist复制我的代码.并且,请注意我的替代图标的名称(blackBgColor)已经在plist中使用了TWICE,如果您要根据我的版本更改图标的名称,请确保在两个位置都更改了名称.

    <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>
    
    Run Code Online (Sandbox Code Playgroud)

现在,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))")
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

  • @khunshan for iPad,关键"CFBundleIcons"应该是"CFBundleIcons~ipad" (6认同)
  • 其他图像怎么样,用于聚光灯、通知、设置应用程序?我们是否需要将所有这些也提供为 png 文件?还是 2x、3x 图像就足够了? (3认同)
  • `亲爱的苹果...` (3认同)