iOS备用图标没有改变
Posted
技术标签:
【中文标题】iOS备用图标没有改变【英文标题】:iOS Alternate Icon not changing 【发布时间】:2018-07-01 01:34:40 【问题描述】:我遵循了一些关于在 ios 中设置替代图标的教程,但我无法让它正常工作。我的 Info.plist 中的重要部分如下所示:
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>default</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>six</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>six</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>crazy</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>crazy</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
还有视图控制器的代码,很简单:
class ViewController: UIViewController
@IBOutlet weak var segment: UISegmentedControl!
override func viewDidLoad()
super.viewDidLoad()
segment.addTarget(self, action: #selector(segmentChanged(_:)), for: .valueChanged)
// Do any additional setup after loading the view, typically from a nib.
@objc func segmentChanged(_ sender: UISegmentedControl)
var icon: String?
switch sender.selectedSegmentIndex
case 1:
icon = "six"
case 2:
icon = "crazy"
default:
icon = nil
changeIcon(icon)
func changeIcon(_ icon: String?)
if UIApplication.shared.supportsAlternateIcons
UIApplication.shared.setAlternateIconName(icon, completionHandler: (error) in
print("\(error?.localizedDescription)")
)
当方法被调用时,我会提示说
您已更改“应用程序”的图标。
但是显示的图标是默认的 我的图标文件被命名为:six@2x.png, Six@3x.png, crazy@2x.png, crazy@3x.png, default@2x.png, default@3x.png 为什么它没有改变?将图像文件放入项目中是否有任何特殊步骤?我已经把我的放在“res”文件夹中了
项目: https://www.dropbox.com/s/nboslz2s6gagvwl/AltIcon.zip?dl=0
【问题讨论】:
请进一步澄清您的问题,您到底想要什么。 查看此链接:medium.com/@same7mabrouk/…UIApplication
上有一个名为 alternativeIconName
的属性,对于调试,在尝试更改之前打印名称会很有用。查看是否包含任何路径信息。
它打印出正确的图标名称,但不会改变。
我下载了你的项目我发现了一堆错误。您的图像不是 png 文件。如果您将它们重新保存为 png 它就可以工作。
【参考方案1】:
研究了几分钟,终于找到了我的错。如果您的实现看起来很完美并且没有理由不工作,那么重点是:
在我的例子中,我在我创建的视图控制器中的viewDidLoad()
方法中触发了UIApplication.shared.setAlternateIconName("ICON_NAME")
,就在触发启动屏幕之后,称为AfterSplashViewController
。
这个视图控制器就像一个路由器,看起来和启动屏幕一样,也有几个业务逻辑,比如到应用程序或登录屏幕的路由等。
长话短说,在调用setAlternateIconName()
方法后,系统会向用户显示一个弹出窗口,以默认文本通知应用程序图标更改。在您的情况下,如果您的逻辑没有时间通过原因显示此弹出窗口,则此方法将不起作用,您的应用程序图标也不会更改。
确保在您的代码库中触发“setAlternateIconName()”方法,就在正确的位置。
编码愉快。
【讨论】:
【参考方案2】:原来是我用来缩小图像的软件有问题,它没有正确保存 PNG 文件。
【讨论】:
什么是“不正确”?你做了什么改变来解决它? 我在 Mac 上使用Preview
应用程序再次保存了它们,之后它运行良好
这有帮助!我遇到了与 OP 完全相同的问题。我的图标文件保存为 JPG。一旦我将它们保存为 PNG,图标就会正确更改。以上是关于iOS备用图标没有改变的主要内容,如果未能解决你的问题,请参考以下文章