首页 > 解决方案 > 我将如何修改已经绘制的路径?

问题描述

所以我对线条有一个看法。行数由用户输入决定。我知道创建线条以及如何用不同的效果渲染这些线条。但是我将如何修改已经创建的线条。

因此,例如,我想让第二条绘制的线在用户点击按钮后在中间有一个中断。

这是一些最少复制的代码..

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
    }
}

标签: swiftui

解决方案


推荐阅读