此示例代码说明了我的问题:
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollView {
VStack {
subviewone()
subviewone()
subviewone()
subviewone()
subviewone()
subviewone()
graph()
}.padding(.all)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct graph: View {
var body: some View {
GeometryReader { geo in
Path { path in
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: geo.size.width, y: 0))
path.addLine(to: CGPoint(x: geo.size.width, y: geo.size.width))
}.fill(Color.red)
}
}
}
struct subviewone: View {
var body: some View {
VStack {
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
}
}
}
我需要一个视图来显示一些图形,并且我需要为图形视图分配空间的大小以缩放轴。这就是为什么我将其放在GeometryReader中的原因。
[当我在需要滚动的设备(例如iPhone 8)上运行此代码时,无法滚动以查看整个“图形”。
看起来好像“图形视图”以某种方式绘制在ScrollView之外。
在“路径”视图上设置框架没有帮助。
感谢您提供的任何帮助。
检查此:
struct graph: View {
@State var geo : GeometryProxy?
var body: some View {
Path { path in
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: geo != nil ? geo!.size.width : 0, y: 0))
path.addLine(to: CGPoint(x: geo != nil ? geo!.size.width : 0, y: geo != nil ? geo!.size.width : 0))
}
.fill(Color.red)
.frame(width: self.geo?.size.height)
.background(GeometryReader { geometry -> Color in
OperationQueue.main.addOperation {
self.geo = geometry
}
return Color.clear
})
}
}