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)
}
}
这种方法有一些局限性,因为 UIImage
和 NSImage
不共享所有相同的方法和初始值设定项,但它适用于基本情况,例如您在问题 (init(data: )
)
一个更安全的版本(如果你愿意重写你的一些 UIImage 初始化)可能是创建一个自定义类型,例如 MyImage
,别名为 macOS 上的 NSImage 和 [=22 上的 UIImage =].这样你至少会在你的代码中提醒你实际上并没有在 macOS 上调用 UIImage
。
目标:多平台上的 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)
}
}
这种方法有一些局限性,因为 UIImage
和 NSImage
不共享所有相同的方法和初始值设定项,但它适用于基本情况,例如您在问题 (init(data: )
)
一个更安全的版本(如果你愿意重写你的一些 UIImage 初始化)可能是创建一个自定义类型,例如 MyImage
,别名为 macOS 上的 NSImage 和 [=22 上的 UIImage =].这样你至少会在你的代码中提醒你实际上并没有在 macOS 上调用 UIImage
。