目标:多平台 iOS/MacOS 上的 SwiftUI 图像
问题:加载图像时我需要包装到 UIImage 中,并且它在 macOS 上不起作用
问题:加载多平台图像有何价值?
var body: some View {
Image(uiImage: UIImage(data: image ?? self.image)!)
}
Run Code Online (Sandbox Code Playgroud)
添加仅适用于您的 macOS 目标的帮助程序文件,其中包括:
typealias UIImage = NSImage
extension Image {
init(uiImage: UIImage) {
self.init(nsImage: uiImage)
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法有一些限制,因为UIImage和NSImage不共享所有相同的方法和初始值设定项,但它适用于基本情况,例如您在问题中提到的情况 ( init(data: ))
一个更安全的版本(如果您愿意重写一些 UIImage init)可能是创建一个自定义类型,例如MyImage在 macOS 上别名为 NSImage ,在 iOS 上别名为 UIImage 。这样,您至少会在代码中提醒您实际上并不是UIImage在 macOS 上调用。
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |