swiftui - 我将如何修改已经绘制的路径?
问题描述
所以我对线条有一个看法。行数由用户输入决定。我知道创建线条以及如何用不同的效果渲染这些线条。但是我将如何修改已经创建的线条。
因此,例如,我想让第二条绘制的线在用户点击按钮后在中间有一个中断。
这是一些最少复制的代码..
import SwiftUI
struct ContentView: View {
@State private var path = Path()
@State private var horizontalLines = 0
var body: some View {
GeometryReader { geo in
VStack {
Draw(path: $path)
.stroke()
.clipped()
.padding()
HorizontalLine(path: $path, horizontalLines: $horizontalLines, rect: geo.frame(in: .local))
}
}
}
private func addLine() {
path.addEllipse(in: path.boundingRect)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Draw: Shape {
@Binding var path: Path
func path(in rect: CGRect) -> Path {
var path = path
path.addRect(rect)
return path
}
}
struct HorizontalLine: View {
@Binding var path: Path
@Binding var horizontalLines: Int
let rect: CGRect
var verticalOffset: CGFloat {
let height = rect.size.height
let tenths = height / 10
return tenths * CGFloat(horizontalLines)
}
var body: some View {
Button("Add Horizontal Lines") {
path = addHLine()
}
}
private func addHLine() -> Path {
var path = path
path.move(to: CGPoint(x: rect.minX + 50, y: verticalOffset))
path.addLine(to: CGPoint(x: rect.maxX - 75 , y: verticalOffset))
self.horizontalLines += 1
return path
}
}
解决方案
推荐阅读
- python - 如何使用值搜索单元格并获取索引号
- linux - Linux bash shell 注入命令的可能列表是什么?
- ffmpeg - 如何修复:将某些 mp4 视频编码为 wmv 后,帧速率与源不同
- python - Django 无法在 AWS Elastic Beanstalk 负载平衡环境中获取用户 IP
- maven - 如何在 Maven 子模块上制作 GitHub 依赖关系图/指标列表依赖关系?
- google-apis-explorer - google Apps 脚本 API 方法“projects.updateContent”给出错误
- jquery - 将 HTML 内容更改为 Json 内容
- javascript - 什么可能导致 return 语句在 if 代码块中不起作用
- javascript - Javascript scrollIntoView 仅在直接父级中
- python - 如何在每 __ 秒 __ 次打印此消息的情况下实现这一点?