Image(uiImage:) 将彩色图像转换为黑白

问题描述 投票:0回答:1

我有一个数据对象,可以动态更改分配给其实例变量之一的

UIImage
,但在 SwiftUI 中显示此图像时,它始终是黑白的。以下示例代码显示了同一图像之间的差异,但首先使用本机构造函数
Image(systemName:)
,然后使用
Image(uiImage:)

使用

AppKit
Image(nsImage:)
时不会出现此问题。

enter image description here

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()
}
swiftui uikit
1个回答
0
投票

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")!
                 }
            }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.