Код: Выделить всё
let icons = Bundle.main.infoDictionary!["CFBundleIcons"] as! [String: Any]
let primaryIcon = icons["CFBundlePrimaryIcon"] as! [String: Any]
let iconName = primaryIcon["CFBundleIconName"] as! String
return UIImage(named: iconName)!
Подробнее:
< ul>
[*]Если я собираю с использованием базового SDK iOS 17, он отлично работает как на iOS 17, так и на iOS 18.
[*]Если я собираю с использованием базового SDK iOS 18 (с цель развертывания iOS 17), происходит сбой как на iOS 17, так и на iOS 18.
Я пробовал ответы из раздела «Как получить UIImage of AppIcon?», но результат не так хорош. В частности, следующий код, который использует CFBundleIconFiles вместо CFBundleIconName:
Код: Выделить всё
let icons = Bundle.main.infoDictionary!["CFBundleIcons"] as! [String: Any]
let primaryIcon = icons["CFBundlePrimaryIcon"] as! [String: Any]
let iconFiles = primaryIcon["CFBundleIconFiles"] as! [String]
return UIImage(named: iconFiles[0])!
Я провел следующее исследование:
- В настройке приложения я использую каталог активов (), с файлом изображения с именем icon1024.png и размером 1024x1024.
Код: Выделить всё
Assets.xcassets -> AppIcon
- Общие сведения вкладке целевой настройки я устанавливаю AppIcon в качестве значка приложения.
- в полученном продукте (), я вижу 3 связанных файла:
Код: Выделить всё
.app
- AppIcon60x60@2x .png
- AppIcon76x76@2x~ipad.png
- Assets.car
Я попробовал построить с помощью как iOS 17, так и iOS 18, и имеют одинаковую структуру папок .app.
Это означает, что при сборке с использованием базового SDK iOS 17 при вызове UIImage(named: "AppIcon "), он каким-то волшебным образом загружает файл Assets.car/icon1024.png. Однако, если я выполню UIImage(named: "icon1024"), или UIImage(named: "icon1024.png"), или UIImage(named: "Assets.car/icon1024.png")< /code> или UIImage(named: "Assets.car/icon1024.png"), он возвращает ноль.
Я не знаю, почему я работал раньше (кто-нибудь знает ?), но это больше не работает при сборке для iOS 18. Что мне делать?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-ios-18