在SwiftUI中,我有一个包含Rectangle的VStack。矩形会自动填充父级VStack的宽度,这对于宽度非常好,但我希望将高度设置为与宽度相等,以便成为正方形。如何将纵横比设置为1:1或将高度设置为宽度?
VStack {
Rectangle()
.frame(height: ?? ) // I want to make the height equal to width so it's square
Spacer()
你需要的是 .aspectRatio()
修饰符:
public func aspectRatio(_ aspectRatio: CGFloat? = nil,
contentMode: ContentMode) -> some View
参数:
aspectRatio
:用于生成视图的宽高比。使用nil
以保持结果视图的当前纵横比。
contentMode
:指示此视图适配或填充其父上下文的标志。返回值:将此视图的尺寸限制为给定大小的纵横比,并使用
contentMode
作为其缩放算法的视图。
如果你显式地给它一个 aspectRatio
值为 1.0
,你可以确保它会保持正方形形状:
VStack {
Rectangle()
.aspectRatio(1.0, contentMode: .fit)
Spacer()
}
VStack {
Rectangle()
.aspectRatio(contentMode: .fit)
Spacer()
}