iOS 10.3中的备用图标

28

我知道如何在iOS 10.3中设置备用图标,需要在Info.plist中添加相应的密钥。但我不确定每个备用图标所需的大小是什么。我现在使用资源文件夹,并且必须为Spotlight、不同的iPhone和iPad尺寸等放置约12个不同大小的图标。备用图标的规则是什么?


可能是重复的问题:是否可以将替代图标应用于iOS应用程序? - KlimczakM
2个回答

28

由于最大的问题在于如何配置图标图像源和info.plist,这里提供了一个样例,告诉您如何在Swift 3中实现iOS 10.3中的备用图标设置。

Assets.xcassetsinfo.plist

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

  2. 就像您在图片中看到的那样,备用图标图像应该作为png文件添加到项目中(在我的示例中为黑色背景图像),但不要添加到Assets.xcassets中

  3. 备用图标在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))")
            }
        }
    }

}

如何为iPad设计图标? - khunshan
@khunshan https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW14 - Kaiyuan Xu
8
@khunshan适用于iPad,关键字“CFBundleIcons”应更改为“CFBundleIcons〜ipad”。 - Kaiyuan Xu
3
其他图像如聚焦、通知、设置应用程序等,我们需要提供它们的PNG文件吗?还是2x、3x大小的图像就足够了? - user3752049
3
亲爱的苹果公司... - user5306470
"如果您的应用支持iPad Pro,大小应该为83.5pt。" - 您能分享一下如何为同时支持iPhone和iPad的应用添加图标吗? - Naveen George Thoppan

4
要更改图标,您需要使用set​Alternate​Icon​Name(_:​completion​Handler:​)
您需要将CFBundleAlternateIcons放在Info.plist中。备用图标的大小与主要此处列出的图标大小相同。
您可以在CFBundleAlternateIcons字典条目的内容中阅读完整文档。

enter image description here


编辑:这段摘录来自上面的文档 此处列出的图标大小

提供视觉上一致的所有必要尺寸的备用图标。 与您的主应用程序图标一样,每个备用应用程序图标都作为一组相关图像交付,其大小不同。当用户选择替代图标时,该图标的适当大小将取代主屏幕、Spotlight和系统中其他位置的主应用程序图标。为确保备用图标在整个系统中始终呈现一致性——例如,用户不应该在主屏幕上看到您的图标的一个版本,在设置中看到完全不同的版本——请以与您为主应用程序图标提供的相同尺寸提供它们(除了大型App Store图标)。请参阅应用程序图标大小


好的,再确认一下...这只是主应用程序图标大小,还是包括聚光灯大小等?每增加一个图标需要13个不同的图像,这样应用程序的大小可能会很快增加。 - user717452

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接