设置 ascpectMode: .fit 后,来自 UIImage 的 SwiftUI 图像仍然被拉伸

Dav*_*zzo 5 image aspect-ratio uiimage swift swiftui

当使用初始化程序 Image(uiImage: UIImage) 从 UIImage 创建 SwiftUI 图像时,我很难正确显示 SwiftUI 图像。

我正在使用的代码是

private var rightViewImage: Image

public var body: some View {
        ....
                  rightViewImage
                        .resizable()
                        .renderingMode(.template)
                        .scaledToFit()
                        .foregroundColor(.blue)
                        .frame(width: 20, height: 20)

}
Run Code Online (Sandbox Code Playgroud)

并在方法中设置变量

if let image = UIImage(systemName: "mic") {
   rightViewImage = Image(uiImage: image)
}
Run Code Online (Sandbox Code Playgroud)

我得到了图像的拉伸版本

1

而不是正确缩放的,这是这个

2

看起来 .scaledToFit() 不起作用,它像 .fill 一样渲染它。

这是一个错误吗?

Ste*_*rot 2

UIImage(systemName:)提供了与 完全不同的图像尺寸和分辨率Image(systemName:)

对于这种情况,您应该这样做:

 Image(systemName: "mic")
            .resizable()
            .renderingMode(.template)
            .scaledToFit()
            .foregroundColor(.blue)
            .frame(width: 20, height: 20)
Run Code Online (Sandbox Code Playgroud)

这是 Image() 渲染的内容:

在此输入图像描述

这是 UIImage() 渲染的内容:

在此输入图像描述