我们可以使用 Swift 5.3 引入的可选的静态类型属性包装器 @ScaledMetric
来避免使用字符串引用图像资源。该属性包装器可以根据当前的显示比例自动调整图像的大小。
例如,我们要将名为 myImage
的图像资源作为 Image
组件的背景使用,我们可以将其定义为一个可选的静态类型属性,如下所示:
@ScaledMetric(relativeTo: .body) var imageSize: CGFloat = 100
var body: some View {
Image("myImage")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: imageSize, height: imageSize)
}
这里,我们将 @ScaledMetric
属性包装器应用于 imageSize
属性,将其与 .body
比例关联。然后,我们可以将 imageSize
用作图像的宽度和高度,而不必通过字符串引用资源名称。根据当前的显示比例,imageSize
的值将自动调整。
需要注意的是,@ScaledMetric
属性包装器只适用于 iOS 14 及更高版本。