如何在SwiftUI中获取不同视图的框架(大小和坐标)?

时间:2020-04-20 18:13:53

标签: swiftui geometryreader

我需要为VStack中的多个视图获取框架。我认为使用GeometryReader,但它仅为父级返回必要的参数。如何在下面的屏幕截图中为每个视图获取这些参数?

Layout I need to get frames for

1 个答案:

答案 0 :(得分:0)

我们可以在所需视图上的叠加层内部使用GeometryReader,并将必要的帧存储在数组中或作为单独的变量。

ForEach(0..<n) { number in
  YourView()
    .overlay(
      GeometryReader { geometry in
        Color.clear
          .onAppear {
            self.buttonFrames[number] = geometry.frame(in: .global)
          }
        }
    )
}

有关更多详细信息,您可以检查以下来源:https://github.com/twostraws/SwiftOnSundays/blob/master/020%20Switcharoo/Project/Switcharoo/ContentView.swift 以及完整的教程:https://www.youtube.com/watch?v=ffV_fYcFoX0