Swift UI设置使矩形变为正方形

15

在SwiftUI中,我有一个包含Rectangle的VStack。矩形会自动填充父级VStack的宽度,这对于宽度非常好,但我希望将高度设置为与宽度相等,以便成为正方形。如何将纵横比设置为1:1或将高度设置为宽度?

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

31

你需要的是 .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()
}

4
我假设你期望这个

在此输入图片描述

VStack {
    Rectangle()
        .aspectRatio(contentMode: .fit)
    Spacer()
}

1
我也尝试过这种方式,没有加1.0,这也行得通。 - yantronica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接