我试图在我的iOS应用程序中设置一个名为MyIcon
的alternate app icon。我的项目包中有一个MyIcon.png
图像(不在我的Assets文件夹中),它在我的Info.plist中声明如下:
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>MyIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>MyIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
在我的代码中,我尝试更改应用图标:
UIApplication.shared.setAlternateIconName("MyIcon")
然而,图标没有改变,而是在控制台中给出了这个错误:
Error Domain=NSCocoaErrorDomain Code=3072 "The operation was cancelled."
如何解决此问题?
2条答案
按热度按时间vmdwslir1#
我得到这个错误有两个原因,
viewDidLoad
中更改图标。当我尝试像下面的代码一样延迟时,无论我给它多少秒,它都在工作。fgw7neuy2#
这个错误困扰了我很长一段时间,我尝试了各种方法,但都找不到我做错了什么。我把
AppDelegate.application(didFinishLaunchingWithOptions:)
的图标改了。用上面建议的计时器延迟呼叫确实解决了这个问题。值得注意的是,这个问题是由于UIKit试图显示一个带有消息的
UIAlertController
您已更改$(PRODUCT_NAME)的图标
你需要等待直到一个根视图控制器被加载。
这是因为这个API并不是让开发者随意更新图标,而是让用户有意识地选择一个。