我们可以使用 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 及更高版本。