如何获得AppIcon的UIImage?

时间:2014-04-02 10:23:21

标签: ios objective-c xcode uiimage

我正在使用资产目录,并且可以向资产添加各种大小的应用程序图标。

但是当我尝试以编程方式获取UIImage时,它返回了nil。

UIImage *appIcon = [UIImage imageNamed"AppIcon"];

应用图标的名称为AppIcon(默认值),实际文件为app-icon-256.png等。

我还注意到,与普通图像不同,应用程序图标位于目录AppIcon.appiconset中的“应用程序图标”集中。普通图像位于someimage.imageset目录中。

2 个答案:

答案 0 :(得分:64)

问题是编译后资产目录中的AppIcon没有放在目录中。将其复制到您的应用包中,就像之前一样。

将图标复制到应用包时使用的名称转换为AppIcon<size>.png,其中大小为40x4072x72

您可以通过指定所需应用图标的大小来获取应用图标:

UIImage *appIcon = [UIImage imageNamed:@"AppIcon40x40"];

答案 1 :(得分:1)

现代 >iOS10 的答案是:

复制并粘贴此扩展程序。

extension Bundle {
  
  public 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
  }
}

然后就这样调用:

Bundle.main.icon

SwiftUI

Image(uiImage: Bundle.main.icon ?? UIImage())