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

Posted

技术标签:

【中文标题】为啥我的备用图标可以在 iPhone 上工作,但不能在 iPad 上工作?【英文标题】: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 有区别?

【问题讨论】:

【参考方案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 吗? ***.com/questions/51949430/… 如果 iPad (152px) 和 iPad Pro (167px) 需要 @2x,那么正确的命名约定是什么?例如,我的项目中有 'blueAppIcon@2x~ipad.png' 作为松散文件(即 152px),但如果我想为 iPad Pro 添加另一个文件,应该叫什么? 好的,命名和iPhone一样。只需欺骗 CFBundleIcons(并将欺骗命名为 CFBundleIcons~ipad)树。当然,如果你真的想为不同的屏幕尺寸提供不同的质量,你可以对不同的尺寸进行不同的命名并编辑复制树。【参考方案3】:

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

【讨论】:

以上是关于为啥我的备用图标可以在 iPhone 上工作,但不能在 iPad 上工作?的主要内容,如果未能解决你的问题,请参考以下文章

为啥视网膜设备上的图标不显示?

为啥我的应用程序图标没有显示在我的实际手机上?

更改 iPhone 和 iPad 上的备用图标 (setAlternateIcon for iPhone & iPad)

为啥我的网站图标不在服务器上工作,但在本地工作?

更改iPhone和iPad上的备用图标(适用于iPhone和iPad的setAlternateIconname)

为啥 iOS 应用程序图标在 iPhone 6 plus 上安装时会挂起并创建另一个安装图标?