我在iPad上更改应用程序图标时遇到问题。在iPhone上一切正常,但在iPad上出现此错误:
[默认值]无法将首选图标名称设置为AI-Gorgosaurus ...:0〉错误:错误域= NSCocoaErrorDomain代码= 4 "文件不存在。"用户信息= {NSUnderlyingError = 0x600000248a30 {错误域= LSApplicationWorkspaceErrorDomain代码= -105 "在CFBundleAlternateIcons条目中未找到iconName"用户信息= {NSLocalizedDescription =在CFBundleAlternateIcons条目中未找到iconName}}}应用程序图标失败,原因是文件不存在。
我搜索广告发现我需要在CFBundleIconFiles
中添加~ipad
,但仍然得到同样的错误!。
下面是代码:
func changeIcon(to name: String?) {
//Check if the app supports alternating icons
guard UIApplication.shared.supportsAlternateIcons else {
return;
}
//Change the icon to a specific image with given name
UIApplication.shared.setAlternateIconName(name) { (error) in
//After app icon changed, print our error or success message
if let error = error {
print("App icon failed to due to \(error.localizedDescription)")
} else {
print("App icon changed successfully.")
}
}
}
我刚刚测试了另一个项目,工作很好!!!但不是在我目前的项目为什么?!你有什么想法吗?
7条答案
按热度按时间mrfwxfqh1#
您的信息列表结构不正确。
您已经:
但它应该是:
基本上,一旦你让它处理iPhone图标
CFBundleIcons
,就把整个树复制为CFBundleIcons~ipad
,iPad文件根本不应该嵌套在CFBundleIcons
下。您混淆了
CFBundleIcons~ipad
和CFBundleIconFiles~ipad
(这不是有效的密钥)。cngwdvgl2#
尝试给予此答案的更可重复使用(易于复制/粘贴)的版本。
1)您需要将以下名称和大小的图像添加为常规.png文件(无资产目录)
然后你可以在你的信息列表中添加/插入以下内容
然后使用以下命令设置图标
zte4gxcn3#
请对plist文件进行这些更改,以便为iPhone和iPad设置备用图标。
2w2cym1i4#
使用Xcode 13+,您无需再手动处理文件/plist。您只需将构建设置下的“包含所有应用图标资产”设置设为是。或者点击“您的目标”-常规-应用图标和启动屏幕-包含所有应用图标资产。
之后,只需添加图标到xcassets目录。(由于某种原因,它并不总是与单一大小的图标在iPad上工作,所以你应该更好地使用所有图标大小的图标集)。
最好避免在图标名称中使用符号。我在iPad上使用图标名称“Icon-Red"时不起作用,但使用“IconRed”时效果很好
使用前面答案中提供的代码。
快速样本
目标C样本
d7v8vwbk5#
我注意到您的plist将UIPrenderedIcon设置为NO
将其更改为YES
问题可能出在渲染上
编辑1:添加.png扩展名,看看是否有帮助
编辑2:尝试将新图标的文件名更改为ipadAlternate.png。然后在plist中更改为相同的名称,因为看起来您的plist与图标文件本身存在某种不匹配
编辑3:你清理DerivedData文件夹了吗?我之前遇到了一个问题,没有任何帮助,包括清理项目等。但我尝试删除/Users/YOURUSERNAME/Library/Developer/Xcode/DerivedData/文件夹中的所有内容,它又开始工作了。值得一试。
编辑4:试着从编辑3开始做步骤。然后重新启动你的项目并删除所有可选的图标文件。选择移动到垃圾桶,然后按CMD+SHIFT+K进行清理。然后按CMD+B进行构建。接下来将图标添加回原来的位置。检查目标是否被正确选择,如果需要的话,复制项目。由于某种原因,Xcode失去了你的文件,它显示一个错误,没有文件。
如果这不起作用,那么尝试上述步骤。但首先尝试移动整个项目到一个不同的文件夹。
编辑5:还有一个想法,你可以尝试自己。尝试删除当前项目中的plist文件(删除前保留一个备份),然后开始一个新的项目,图标更改工作正常。添加plist从该项目到这个项目。检查图标更改工作。如果是,然后添加所有丢失的关键字,你在以前的项目。
警告:这是最后的手段,但这可能会工作。启动一个新的项目,并设置它与图标,你想交替。检查他们是否工作,然后添加所有的代码和依赖关系,从项目中,它不工作。只是不要覆盖PLIST文件。
编辑6:尝试从模拟器或您正在试用的设备中删除应用程序,然后重新安装。整个问题可能与更新和应用程序以前版本的遗留问题有关。
编辑7:尝试将项目复制到另一台Mac上,看看问题是否仍然存在。你使用的是哪个Xcode版本??如果是Xcode 9,也许可以尝试使用Xcode 10 Beta。
rekjcdws6#
错误是显示的文件名与.plist
CFBundleAlternateIcons
中的文件名不同。请确保在中指定了正确的文件名,并且该文件名确实存在于项目文件夹中。错误显示
AI-Gorgosaurus
作为文件名。.plist屏幕截图显示AI-Diabloceratops~ipad
,还请从文件名中删除~
符号。做一个清洁和建立项目后,你确定文件是正确的。确保你有你的图标的
@2x
和@3x
版本在你的项目文件夹。阅读Kaiyuan Xu答案,以更清楚地了解如何使用
CFBundleAlternateIcons
。fbcarpbf7#
与下面的结构,我能够改变iPad中的图标:
产品列表代码: