SwiftUI 如何自动调整 UIImage 的大小?

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

我是学习 SwiftUI 的初学者

我有一个简单的蓝色位图文件导入到资产中。这是一个 150x150 像素的 bmp 文件

我通过以下方式创建 UIImage:

let data = NSDataAsset(name: "BitmapBlue150")!.data
        
        
let uiImage = UIImage(data: data)!

然后在我看来,位图显示为

Image(uiImage: uiImage)

当我检查 uiImage.scale 时,它显示scale = 1

但是,在我看来,显示的图像是150x150点,而不是像素

图像视图是否自动缩放图像?如果是的话,那么比例因子不应该是 1,对吗?

感谢您的见解

swift swiftui uiimage
1个回答
0
投票

您误解了

scale
的工作原理。图像的
scale
是您乘以的因子,以将点转换为像素。

如果从名称包含 @2x 修饰符的文件加载图像,则比例将设置为 2.0。当从 Core Graphics 图像初始化图像时,您还可以指定显式比例因子。假设所有其他图像的比例因子为 1.0。

如果将图像的逻辑大小(存储在

size
属性中)乘以该属性中的值,则会得到图像的尺寸(以像素为单位)。

因此,比例为 1.0 意味着图像中的一个像素对应于一个点,是的,iOS 将会 根据设备屏幕的比例自动调整图像大小。由于图像的一个像素对应一个点,因此如果您在 iPhone 15 Pro Max 上显示图像,图像将会放大 3 倍(scale=3,即每点三个像素)。

你的图像的比例是1.0,只是因为你在创建图像时没有指定

scale:
。您传递给
Data
init(data:)
没有比例,因此假设比例为 1.0。例如,如果您这样做
UIImage(data: data, scale: 2.0)
,您可以自己设置比例。

如果您使用图像集而不是数据集,您可以通过将它们放入相应的插槽中来设置图像的比例:

enter image description here

系统将根据设备选择适当版本的图像。

© www.soinside.com 2019 - 2024. All rights reserved.