带有Path元素的SwiftUI ScrollView未全部显示



此示例代码说明了我的问题:

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之外。

在"路径"视图上设置框架没有帮助。

感谢您提供的任何帮助。

1(你应该使用Shape,因为这样你就可以得到一个可以"绘制"的矩形

2( 你必须给它一个框架,因为苹果不知道你的形状有多大(见最后我附上的矩形(

3( 如果你不给它一个框架,你会得到一个"默认"的形状高度,就像矩形得到一样

struct ContentView: View {
var body: some View {
ScrollView {
VStack {
subviewone()
subviewone()
subviewone()
subviewone()
subviewone()
subviewone()
graph()
.fill(Color.red)
.frame(height:400) // or:  .aspectRatio(contentMode: .fill)
Rectangle()
Rectangle()
Rectangle()

}.padding(.all)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

struct graph: Shape {
func path(in rect: CGRect) -> Path {
Path { path in
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: rect.size.width, y: 0))
path.addLine(to: CGPoint(x: rect.size.width, y: rect.size.width))
}
}
}
struct subviewone: View {
var body: some View {
VStack {
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
Text("testtest")
}
}
}

最新更新