簡體   English   中英

如何在應用程序本身中包含 iOS 應用程序圖標圖像?

[英]How do I include iOS App Icon image within the app itself?

我有標准的 iOS 應用程序,資產中包含一個標准的應用程序圖標。

我想在應用程序中顯示應用程序圖標(使用 SwiftUI)。 請注意,我不是在問如何設置應用程序圖標,或動態更改圖標。 我只想在應用程序自己的設置視圖中顯示應用程序圖標。

看起來 App Icon 資產應該和其他任何資產一樣,我可以使用以下內容包含它(注意在默認圖標命名中 App 和 Icon 之間沒有空格),

Image("AppIcon")

我也試過嘗試,

Image("icon_60pt@3x.png") // Pick out a specific icon by filename
Image("icon_60pt@3x") // Maybe it assumes it's a .png
Image("icon_60pt") // Maybe it auto picks most appropriate resolution, like UIKit

...但這些都不起作用。

如何在應用程序中包含應用程序自己的圖標,而不將其復制為單獨的圖像集(我已經嘗試過,並且確實有效。)

謝謝。

如果為使用過的設備正確設置了應用程序圖標(即 iPhone 的 iPhone 圖標等),則以下操作有效

注意:應用圖標的大小必須完全匹配!

用 Xcode 11.4 測試

演示1

演示2

Image(uiImage: UIImage(named: "AppIcon") ?? UIImage())

這有效:

extension Bundle {
    var iconFileName: String? {
        guard let icons = infoDictionary?["CFBundleIcons"] as? [String: Any],
              let primaryIcon = icons["CFBundlePrimaryIcon"] as? [String: Any],
              let iconFiles = primaryIcon["CFBundleIconFiles"] as? [String],
              let iconFileName = iconFiles.last
        else { return nil }
        return iconFileName
    }
}

struct AppIcon: View {
    var body: some View {
        Bundle.main.iconFileName
            .flatMap { UIImage(named: $0) }
            .map { Image(uiImage: $0) }
    }
}

然后,您可以在任何視圖中使用它:

AppIcon()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM