iOS 10.3中的备用图标

时间:2017-03-29 15:16:38

标签: ios objective-c swift icons info.plist

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

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

2 个答案:

答案 0 :(得分:20)

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

Assets.xcassets info.plist

  1. 如果您的应用不支持iPad,则图标图像源可以是60pt @ 2x和60pt @ 3x(120x120 180x180),并且20pt 29pt和40pt都可以从60pt图像生成。因此,您的备用图标图片来源也应为60pt @ 2x和60pt @ 3x ,如果它是仅限iPhone的应用程序。如果您的应用支持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>
    
  4. 现在,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))")
                }
            }
        }
    
    }
    

答案 1 :(得分:3)

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

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

您可以阅读Contents of the CFBundleAlternateIcons Dictionary Entry

中的完整文档

enter image description here

修改:此摘录来自上述文档icon sizes listed here

  

提供所有必要尺寸的视觉上一致的备用图标。与主应用图标一样,每个备用应用图标都会作为一组尺寸不同的相关图片传送。当用户选择备用图标时,该图标的相应大小将替换主屏幕,Spotlight和系统中其他位置的主应用程序图标。为了确保在整个系统中一致地显示备用图标 - 用户不应在主屏幕上看到您的图标的一个版本,并且在设置中看不到完全不同的版本 - 例如,提供与您为主要应用程序图标提供的相同尺寸的图标(大型App Store图标除外)。见App Icon Sizes