我有一个数据对象,可以动态更改分配给其实例变量之一的
UIImage
,但在 SwiftUI 中显示此图像时,它始终是黑白的。以下示例代码显示了同一图像之间的差异,但首先使用本机构造函数 Image(systemName:)
,然后使用 Image(uiImage:)
。
使用
AppKit
和 Image(nsImage:)
时不会出现此问题。
import SwiftUI
import UIKit
struct ContentView: View {
@State var object = MyObject()
var body: some View {
Image(systemName: "exclamationmark.triangle.fill")
.symbolRenderingMode(.palette)
.foregroundStyle(.white, .yellow)
Image(uiImage: object.image)
}
}
class MyObject {
var image = UIImage(systemName: "exclamationmark.triangle.fill")!
.applyingSymbolConfiguration(.init(paletteColors: [.white, .systemYellow]))!
}
#Preview {
ContentView()
}
将
UIImage
等类与 @State
一起使用需要特殊处理,如下所示:
struct ContentView: View {
@State var image: UImage?
var body: some View {
Group {
if let image {
Image(uiImage: image)
}
else {
Text("Loading Image")
.onAppear {
image = UIImage(systemName: "exclamationmark.triangle.fill")!
}
}
}
}