swiftui - 带有路径元素的 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)你必须给它一个框架,因为Apple不知道你的形状有多大(见我最后附加的矩形)
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")
}
}
}
推荐阅读
- scala - 从 KafkaStreams 输入流中获取记录并发送到两个输出流的最佳选择是什么?
- javascript - 如何以鼠标移动角度拖动图像
- regex - 如何使用正则表达式捕获价格?
- flask - 琐碎更改后在应用程序上下文之外烧瓶
- oracle - 将 TSQL 转换为 Oracle 设置参数
- c# - 如何解决此“是一个变量但像类型一样使用”错误?
- html - 当我缩小浏览器时,我的背景图像没有响应
- mysql - mysql - 如何将来自同一表和列的 2 个不同元素的计数相加并将其显示为一个?
- r - 尝试使用 geom_abline 添加图例
- python - 使用 ~isin([list_of_substrings]) 过滤数据框