基于这个问题:SwiftUI - Drawing (curved) paths between view
我使用 绘制所需的视图和路径GeometryReader。问题是,现在屏幕变得太长而无法显示全部内容(有 15 个这样的视图,但您在这里只能看到 6 个):
所以...我ScrollView在整个事情上添加了一个。之外,GeometryReader因为否则所有观点都是错误的。这是代码:
var body: some View {
if (challengeViewModel.challengeAmount != 0) {
ScrollView {
GeometryReader { geometry in
let points = calculatePoints(geometry: geometry)
drawPaths(geometry: geometry, points: points)
.stroke(lineWidth: 3).foregroundColor(.yellow)
drawCircles(geometry: geometry, points: points)
}
}
.background(Color.black)
.navigationBarTitle("Journey")
} else {
Text("Loading...")
}
}
Run Code Online (Sandbox Code Playgroud)
(内容基本上就是1.根据屏幕尺寸计算点,2.沿着点绘制路径,3.在点上放置圆圈)
问题:
现在我明白需要从父级和子级GeometryReader获取其高度,这成为一个“先有鸡还是先有蛋的问题”。ScrollView所以我想手动计算高度GeometryReader。
第一次尝试
最简单的方法是采用一些固定值并计算出一个非常粗略的值。我只是将其添加到GeometryReader:
GeometryReader { geometry in …Run Code Online (Sandbox Code Playgroud)