【问题标题】:Why do my alternate icons work on iPhone but not on iPad?为什么我的备用图标可以在 iPhone 上工作,但不能在 iPad 上工作?
【发布时间】:2018-09-05 04:23:20
【问题描述】:

当我构建并部署到 iPhone 时,我可以拨打 UIApplication.shared.setAlternateIconName 就好了。在 iPad Pro 上运行时,出现以下错误:

Error Domain=NSCocoaErrorDomain Code=4 "该文件不存在。" UserInfo={NSUnderlyingError=0x1c0857700 {Error Domain=LSApplicationWorkspaceErrorDomain Code=-105 "iconName not found in CFBundleAlternateIcons entry" UserInfo={NSLocalizedDescription=iconName not found in CFBundleAlternateIcons entry}}}

使用以下代码:

UIApplication.shared.setAlternateIconName(icons[indexPath.row].name) { err in
            if let err = err {
                print("Woops ! \(String(describing: err))")
            }
        }

我有每个图标的标准、2x 和 3x 版本,从 60x60、120x120 和 180x180 不等。这些图像松散地放置在项目中,而不是资产包中。它们在我的 Info.plist 中被引用。

发生了什么事?为什么 iPhone 和 iPad 有区别?

【问题讨论】:

    标签: ios swift xcode


    【解决方案1】:

    Info.plist 中需要一个单独的 CFBundleIcons 条目,专门用于 iPad。它必须命名为 CFBundleIcons~ipad。只需复制您当前的 CFBundleIcons 条目并重命名即可。

    【讨论】:

    • 我认为这是一个更好的答案,因为您不需要重复的图像
    【解决方案2】:

    您还必须为 ipad 分辨率添加图像。他们的名字必须类似于icon@2x~ipad.png~ipad 就是区别

    ipad 的尺寸是

    iPad Pro        167px × 167px (83.5pt × 83.5pt @2x)
    iPad, iPad mini 152px × 152px (76pt × 76pt @2x)
    

    【讨论】:

    • 差不多了,不过你让我走上了正确的道路。我需要带有 ~ipad 后缀的 CFBundleIcons 的第二个副本。谢谢!对不起,我之前不小心删除了你的评论。按钮太小了,我有点烦躁。
    • 是的,就是这样写的。我忘了。必要的设置有点令人困惑,我自己从未使用过此功能。删除的评论没有问题
    • @austintt 你会检查这个 Q 吗? stackoverflow.com/questions/51949430/…
    • 如果 iPad (152px) 和 iPad Pro (167px) 需要 @2x,那么正确的命名约定是什么?例如,我的项目中有 'blueAppIcon@2x~ipad.png' 作为松散文件(即 152px),但如果我想为 iPad Pro 添加另一个文件,应该叫什么?
    • 好的,命名和iPhone一样。只需欺骗 CFBundleIcons(并将欺骗命名为 CFBundleIcons~ipad)树。当然,如果你真的想为不同的屏幕尺寸提供不同的质量,你可以对不同的尺寸进行不同的命名并编辑复制树。
    【解决方案3】:

    请对plist进行以下设置,为ihone和iPad设置备用图标

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 2016-10-17
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多