SwiftUI:用于多平台iOS/MacOS的图像

SwiftUI:用于多平台iOS/MacOS的图像,swiftui,xcode12,Swiftui,Xcode12,目标:多平台iOS/MacOS上的SwiftUI图像 问题:加载图像时,我需要将其包装到UIImage中,但它在macOS上无法工作 问题:加载多平台的图像如何值得 var body: some View { Image(uiImage: UIImage(data: image ?? self.image)!) } 添加仅对macOS目标可用的帮助文件,该文件包括: typealias UIImage = NSImage extension Image {

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

问题:加载图像时,我需要将其包装到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)
    }
}
这种方法有一些局限性,因为
UIImage
NSImage
不共享所有相同的方法和初始值设定项,但它适用于您在问题中提到的基本情况(
init(数据:)


一个更安全的版本(如果您愿意重写一些UIImage init)可能是创建一个自定义类型,例如在macOS上别名为NSImage,在iOS上别名为UIImage。这样,您的代码中至少会有一个提示,提示您实际上并没有在macOS上调用
UIImage

工作得非常出色!谢谢你,伙计