ios - iOS 10.3 中的备用图标

标签 ios objective-c swift icons info.plist

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

最佳答案

由于最大的问题是如何配置图标图片源和info.plist,here是一个示例,告诉您如何在 iOS 10.3 中设置替代图标,在 Swift 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 中alternate icons 的配置有点复杂,所以如果这是你第一次这样做,我建议你复制我的代码到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))")
            }
        }
    }

}

关于ios - iOS 10.3 中的备用图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43097604/

相关文章:

objective-c - NSView 设置框架时出现问题

ios - 使用分成许多数组的数据库数据在 TableView 中搜索?

ios - WKWebView 从 WKBackForwardList 中删除一项

ios - 我如何可以动画化 UINavigationBar 而不是 UITabBar 的条形色调颜色的变化?

ios - 应用程式当机UIFoundation:UINibDecoderDecodeObjectForValue + 424

ios - 如何在 NSString stringWithFormat 中使用 % 字符

objective-c - 在 UIImageView 的图像上方绘制贝塞尔曲线

ios - Objective-C 中的单例和静态变量访问

ios - 使用扩展创建可点击的 UIImageView

ios - Sprite Kit 中的物理类别结构