Swiftui 如何修改已绘制的路径?
所以我可以看到线条。行数由用户的输入决定。我知道如何创建线条以及如何使用不同效果渲染这些线条。。但是如何修改已经创建的行呢 例如,我想让第二条画线在中间有一个折断,也许是一个用户点击按钮。 下面是一些复制最少的代码Swiftui 如何修改已绘制的路径?,swiftui,Swiftui,所以我可以看到线条。行数由用户的输入决定。我知道如何创建线条以及如何使用不同效果渲染这些线条。。但是如何修改已经创建的行呢 例如,我想让第二条画线在中间有一个折断,也许是一个用户点击按钮。 下面是一些复制最少的代码 import SwiftUI struct ContentView: View { @State private var path = Path() @State private var horizontalLines = 0 var body: some
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
}
}
无法编辑
路径
/CGPath
。您必须复制并重新创建它。@George_E然后是否可以通过修改某一行来复制并重新创建路径?我认为最简单的解决方案是使用horizontalLines
调用您的addHLine
函数,然后将其重置为0
。如果horizontalLines==1,则选中,然后以稍微不同的方式绘制线,即绘制两条单独的线。