sam*_*ize 35 xcode objective-c uiimage ios
我正在使用资产目录,并且可以向资产添加各种大小的应用程序图标.
但是当我尝试以编程方式获取UIImage时,它返回nil.
UIImage *appIcon = [UIImage imageNamed"AppIcon"];
Run Code Online (Sandbox Code Playgroud)
应用程序图标命名AppIcon(默认),实际文件app-icon-256.png等.
我还注意到,与普通图像不同,应用程序图标位于目录中的"应用程序图标"集中AppIcon.appiconset.正常图像在目录中someimage.imageset.
rck*_*nes 66
问题是编译后资产目录中的AppIcon没有放在目录中.将其复制到您的应用包中,就像之前一样.
将图标复制到应用程序包时使用的名称转换AppIcon<size>.png是,例如,40x40或者72x72
您可以通过指定所需应用程序图标的大小来获取应用程序图标:
UIImage *appIcon = [UIImage imageNamed:@"AppIcon40x40"];
Run Code Online (Sandbox Code Playgroud)
>iOS10的答案是:
复制并粘贴此扩展名。
extension Bundle {
var icon: UIImage? {
if let icons = infoDictionary?["CFBundleIcons"] as? [String: Any],
let primary = icons["CFBundlePrimaryIcon"] as? [String: Any],
let files = primary["CFBundleIconFiles"] as? [String],
let icon = files.last
{
return UIImage(named: icon)
}
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
然后就这样调用:
Bundle.main.icon
Run Code Online (Sandbox Code Playgroud)
斯威夫特用户界面:
Image(uiImage: Bundle.main.icon ?? UIImage())
Run Code Online (Sandbox Code Playgroud)
2022 年 9 月 12 日更新:这不再有效,至少从 iOS 16.0.0 开始。
其他答案中突出显示的加载主应用程序图标的方法(例如来自 Rufat Mirza 的答案)曾经有效,并且对于调试版本仍然有效,但我收到了 Apple 的应用程序拒绝,称该应用程序在启动时崩溃。事实证明,包含此代码的构建在 iOS 16 上开始崩溃,但仅限于通过 App Store/TestFlight 安装时(使用“发布”配置构建)。更奇怪的是,使用通过 Xcode 编译的“Release”配置进行的构建也不会崩溃,只有在上传到 App Store 并从 TestFlight 下载时才会崩溃,所以请记住这一点。
不幸的是,修复方法是创建一个与 AppIcon 资产内容相同的新图像资产。
请注意,从 12.5.1 开始,此解决方法仍然适用于 macOS,以及 Apple 在今天审查其应用程序时使用的任何 macOS 版本,但由于我已经必须为 iOS 复制资产,所以我还为 macOS 使用了相同的资产避免这个小黑客:)
| 归档时间: |
|
| 查看次数: |
13053 次 |
| 最近记录: |