使用 SwiftUI GeometryReader 而不影响外框?

ars*_*ius 12 swiftui

是否可以以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)
      }

Run Code Online (Sandbox Code Playgroud)

布局不正确所需布局

Vit*_*aly 17

您还可以尝试添加.aspectRatio(contentMode: .fit)修饰符到GeometryReader.


Kra*_*mes 8

只需将.fixedSize()修饰符添加到您的 HStack。这将达到预期的效果。

  • `fixedSize()` 在那个例子中工作,并将 `fixedSize(horizo​​ntal:vertical:)` 附加到我的 `GeometryReader` 在我实际工作的 `View` 中工作(嵌套了 `ZStack`s)。 (4认同)