9

在 SwiftUI 中,我有一个 VStack,里面有一个 Rectangle。矩形会自动填充父 VStack,这对宽度来说非常有用,但我想让高度等于宽度,所以它是正方形的。如何将纵横比设置为 1:1 或设置高度 = 宽度?

VStack {
  Rectangle()
    .frame(height: ?? )  // I want to make the height equal to width so it's square
  Spacer()

}

4

2 回答 2

23

这是您需要的 .aspectRadio() 修饰符:

public func aspectRatio(_ aspectRatio: CGFloat? = nil,
                        contentMode: ContentMode) -> some View
  • 参数:
    • aspectRatio:用于结果视图的宽高比。如果aspectRationil,则生成的视图将保持此视图的纵横比。
    • contentMode:指示此视图是否应适合或填充父上下文的标志。
  • 返回: 将此视图的尺寸限制为 的视图 aspectRatiocontentMode用作其缩放算法。

如果你给它一个明确aspectRatio的 1.0 你可以确定它会保持它的方形:

VStack {
    Rectangle()
        .aspectRatio(1.0, contentMode: .fit)
    Spacer()
}
于 2020-01-12T10:51:13.723 回答
2

我假设你期望这个

在此处输入图像描述

VStack {
    Rectangle()
        .aspectRatio(contentMode: .fit)
    Spacer()
}
于 2020-01-12T09:48:10.440 回答