温馨提示:本文翻译自stackoverflow.com,查看原文请点击:swift - How to define variables inside a GeometryReader in SwiftUI
swift swiftui

swift - 如何在SwiftUI中的GeometryReader中定义变量

发布于 2020-06-15 12:12:15

我想根据视图的大小计算视图内部形状的线宽。通过查看StackOverflow上的各种帖子,我认为解决方案是使用像这样的GeometryReader:

struct MyView: View {
    var body: some View {
        GeometryReader { geometry in
           // Here goes your view content,
           // and you can use the geometry variable
           // which contains geometry.size of the parent
           // You also have function to get the bounds
           // of the parent: geometry.frame(in: .global)
        }
    }
}

我的问题是,如何在GeometryReader构造中定义用于视图的变量?我想在“ GeometryReader {geometry in”行之后直接放置一个var语句,但这会导致编译器错误。

查看更多

提问者
G. Marc
被浏览
20
arsenius 2019-07-17 07:55

这似乎是一个与功能生成器相关的错误(自Beta 3开始),我建议就此提交反馈。

我一直在使用的解决方法是GeometryProxy在单独的方法中使用显式返回。


var body: some View {
  GeometryReader { proxy in
    self.useProxy(proxy)
  }
}

func useProxy(_ proxy: GeometryProxy) -> some View {
  var width = proxy.size.width
  return VStack {
    // use width in here
  }
}