在 SwiftUI 中,我有一个 VStack,里面有一个 Rectangle。矩形会自动填充父 VStack,这对宽度来说非常有用,但我想让高度等于宽度,所以它是正方形的。如何将纵横比设置为 1:1 或设置高度 = 宽度?
VStack {
Rectangle()
.frame(height: ?? ) // I want to make the height equal to width so it's square
Spacer()
}
这是您需要的 .aspectRadio() 修饰符:
public func aspectRatio(_ aspectRatio: CGFloat? = nil,
contentMode: ContentMode) -> some View
- 参数:
- aspectRatio:用于结果视图的宽高比。如果
aspectRatio
是nil
,则生成的视图将保持此视图的纵横比。- contentMode:指示此视图是否应适合或填充父上下文的标志。
- 返回: 将此视图的尺寸限制为 的视图
aspectRatio
,contentMode
用作其缩放算法。
如果你给它一个明确aspectRatio
的 1.0 你可以确定它会保持它的方形:
VStack {
Rectangle()
.aspectRatio(1.0, contentMode: .fit)
Spacer()
}
我假设你期望这个
VStack {
Rectangle()
.aspectRatio(contentMode: .fit)
Spacer()
}