SwiftUI:多平台图像 iOS/MacOS

SwiftUI: image for Multiplatform iOS/MacOS

目标:多平台上的 SwiftUI 图像 iOS/MacOS

问题:加载图像时我需要包装到 UIImage 中,这在 macOS 上不起作用

问题:如何加载多平台图像?

var body: some View {

            Image(uiImage: UIImage(data: image ?? self.image)!)

    }

添加一个仅适用于包含以下内容的 macOS 目标的帮助程序文件:

typealias UIImage = NSImage

extension Image {
  init(uiImage: UIImage) {
        self.init(nsImage: uiImage)
    }
}

这种方法有一些局限性,因为 UIImageNSImage 不共享所有相同的方法和初始值设定项,但它适用于基本情况,例如您在问题 (init(data: ))

一个更安全的版本(如果你愿意重写你的一些 UIImage 初始化)可能是创建一个自定义类型,例如 MyImage,别名为 macOS 上的 NSImage 和 [=22 上的 UIImage =].这样你至少会在你的代码中提醒你实际上并没有在 macOS 上调用 UIImage