不影响外部框架,如何使用SwiftUI的GeometryReader?

25

如何才能使用GeometryReader,而不是填满整个父视图?

以具体的例子来说,我想使用.padding(.bottom, geometry.safeAreaInsets.bottom > 0 ? 0 : 12.0)来控制底部边距。这将在iPhone X上使用安全区域作为边距,在旧设备上使用自定义边距。

如果没有使用GeometryReader,我的视图将占用其实际垂直大小适当的空间。使用读取器后,该视图将占据屏幕的1/2。

    VStack {
      Spacer()
      GeometryReader { proxy in // Lays out nicely without this...
        HStack {
          Text("Wrong")
          Spacer()
        }.border(Color.gray, width: 1)
      }

错误的布局期望的布局

2个回答

18

只需将.fixedSize()修饰符添加到您的HStack中,即可实现所需效果。


7
在那个例子中,fixedSize() 起到了作用,并且在我实际工作的 View(其中有嵌套的 ZStack)中,将 fixedSize(horizontal:vertical:) 附加到我的 GeometryReader 上也起作用。 - arsenius

15
你也可以尝试将.aspectRatio(contentMode: .fit)修饰符添加到GeometryReader中。

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