iOS 10.3 中的备用图标

Posted

技术标签:

【中文标题】iOS 10.3 中的备用图标【英文标题】:Alternate Icon in iOS 10.3 【发布时间】:2017-08-23 04:23:08 【问题描述】:

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

【问题讨论】:

Is this possible to apply the alternative icon to the iOS application?的可能重复 【参考方案1】:

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

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

    就像您在图片中看到的一样,备用图标图像应该作为 png 文件(我的示例中的 blackBgColor 图像)添加到项目中,而不是添加到 Assets.xcassets。强>

    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 developer.apple.com/library/content/documentation/General/… @khunshan for iPad,键“CFBundleIcons”应该是“CFBundleIcons~ipad” 对于聚光灯、通知、设置应用程序的其他图像呢?我们是否需要将所有这些也提供为 png 文件?还是 2x、3x 图像就够了? Dear Apple...【参考方案2】:

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

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

您可以在Contents of the CFBundleAlternateIcons Dictionary Entry阅读完整文档


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

提供所有必要尺寸的视觉一致的备用图标。与您的主要应用图标一样,每个备用应用图标都作为大小不同的相关图像的集合提供。当用户选择备用图标时,该图标的适当大小会替换主屏幕、Spotlight 和系统其他位置上的主应用程序图标。为了确保备用图标在整个系统中始终如一地出现(例如,用户不应在主屏幕上看到您的图标的一个版本而在“设置”中看到完全不同的版本),请提供与您为主应用程序图标提供的相同大小的图标(除了大的 App Store 图标)。见App Icon Sizes

【讨论】:

好的,再说一遍……它只是主要的应用程序图标大小还是聚光灯大小等?每个附加图标都有 13 个不同的图像,看起来应用程序大小可以很快到达那里

以上是关于iOS 10.3 中的备用图标的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 11 中设置备用应用程序图标

是否允许让备用应用程序图标变为动态?

iOS备用图标没有改变

iOS- UIAlert 仅在将应用程序图标更改为备用图标后才显示“确定”

css 备用验证图标

为啥我的备用图标可以在 iPhone 上工作,但不能在 iPad 上工作?