SwiftUI:用于多平台iOS/MacOS的图像
目标:多平台iOS/MacOS上的SwiftUI图像 问题:加载图像时,我需要将其包装到UIImage中,但它在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 {
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
。工作得非常出色!谢谢你,伙计