Ответ 1
Поскольку самая большая проблема заключается в том, как настроить источник изображения значка и info.plist, здесь - это образец, чтобы рассказать вам, как установить альтернативный значки в iOS 10.3, реализованные в Swift 3.
-
Если ваше приложение не поддерживает iPad, источником изображения значка может быть 60pt @2x и 60pt @3x (120x120 180x180), а 20pt и 29pt и 40pt могут быть сгенерированы из изображения 60pt. Итак, ваш альтернативный источник изображения значков должен также быть 60pt @2x и 60pt @3x, если это приложение для iPhone. И это должно быть 83.5pt, если ваше приложение поддерживает iPad Pro.
-
Как и то, что вы видели на картинке, альтернативное изображение значка должно быть добавлено в проект как файл png (изображение BlackBgColor в моем примере), но не добавлено в Assets.xcassets.
-
Конфигурация альтернативных значков в файле info.plist довольно сложна, поэтому, если это ваш первый раз, я предлагаю вам скопировать мой код в plist. И обратите внимание на то, что мое альтернативное имя значка (blackBgColor) использовалось TWICE в plist, если вы собираетесь изменить имя значка на основе моей версии, убедитесь, что вы изменили имя в обоих этих двух местах.
<key>CFBundleIcons</key> <dict> <key>CFBundleAlternateIcons</key> <dict> <key>blackBgColor</key> <dict> <key>CFBundleIconFiles</key> <array> <string>blackBgColor</string> </array> <key>UIPrerenderedIcon</key> <false/> </dict> </dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> </array> </dict> </dict>
Теперь код в ViewController будет прост.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func changeAppIcon(_ sender: Any) {
if UIApplication.shared.supportsAlternateIcons {
print("you can change this app icon")
}else {
print("you cannot change this app icon")
return
}
if let name = UIApplication.shared.alternateIconName {
// CHANGE TO PRIMARY ICON
UIApplication.shared.setAlternateIconName(nil) { (err:Error?) in
print("set icon error:\(String(describing: err))")
}
print("the alternate icon name is \(name)")
}else {
// CHANGE TO ALTERNATE ICON
UIApplication.shared.setAlternateIconName("blackBgColor") { (err:Error?) in
print("set icon error:\(String(describing: err))")
}
}
}
}