对布局没有影响的原因.aspectRatio(contentMode:)
是因为您没有使用resizeable()
.
正在做
var body: some View {
Image("page-under-construction")
.resizable()
.aspectRatio(contentMode: .fill)
}
将导致图像是屏幕的宽度,但不会保持图像的纵横比。要保持纵横比,请执行
var body: some View {
Image("page-under-construction")
.resizable()
.aspectRatio(UIImage(named: "page-under-construction")!.size, contentMode: .fill)
}
这利用.aspectRatio(aspectRatio: CGSize, contentMode: ContentMode)
您与虚拟 UIImage 讨论的原始问题的方法版本来访问图像的原始纵横比。
注意:!
除非您不确定图像名称是否是 Assets 文件夹中的有效名称,否则显式展开的可选 ( ) 应该不是问题。有关 Swift 选项的全面概述,请参阅这篇文章。