【发布时间】: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
【问题讨论】:
-
请进一步澄清您的问题,您到底想要什么。
-
UIApplication上有一个名为alternativeIconName的属性,对于调试,在尝试更改之前打印名称会很有用。查看是否包含任何路径信息。 -
它打印出正确的图标名称,但不会改变。
-
我下载了你的项目我发现了一堆错误。您的图像不是 png 文件。如果您将它们重新保存为 png 它就可以工作。