为什么我的备用图标在iPhone上有效,但在iPad上无效?

aus*_*ntt 8 xcode ios swift

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

错误域= NSCocoaErrorDomain代码= 4“该文件不存在。” UserInfo = {NSUnderlyingError = 0x1c0857700 {Error Domain = LSApplicationWorkspaceErrorDomain代码= -105“在CFBundleAlternateIcons条目中找不到图标名” UserInfo = {NSLocalizedDescription =在CFBundleAlternateIcons条目中找不到图标名}}}

使用以下代码:

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

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

到底是怎么回事?为什么iPhone和iPad有区别?

Gon*_*nzo 11

您也必须为 ipad 分辨率添加图像。而且他们的名字必须像icon@2x~ipad.png. 这~ipad就是区别

ipad的尺寸是

iPad Pro        167px × 167px (83.5pt × 83.5pt @2x)
iPad, iPad mini 152px × 152px (76pt × 76pt @2x)
Run Code Online (Sandbox Code Playgroud)

  • 如果 iPad (152px) 和 iPad Pro (167px) 需要@2x,那么正确的命名约定是什么?例如,我的项目中有“blueAppIcon@2x~ipad.png”作为松散文件(即 152px),但如果我想为 iPad Pro 添加另一个文件,它应该叫什么名字? (4认同)
  • 快到了,你让我走上了正确的道路。我需要带有 ~ipad 后缀的 CFBundleIcons 的第二个副本。谢谢!抱歉,我之前不小心删除了您的评论。按钮太小了,我有点太烦躁了。 (2认同)

aus*_*ntt 10

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