iOS - 将 UIBezierpath 的 lineJoinStyle 设置为 .round 无法使用 (SWIFT)

问题描述 投票:1回答:1

我的代码是这样的。

let myPath = UIBezierPath()
myPath.lineJoinStyle = .round
let rect = bounds
myPath.move(to: CGPoint(x: rect.maxX * 0.05, y: rect.midY))
myPath.addCurve(to: CGPoint(x: rect.maxX / 3, y: rect.maxY / 10),
                controlPoint1: CGPoint(x: rect.midX/5, y: rect.midY/2),
                controlPoint2: CGPoint(x: rect.midX/3, y: rect.midY/3))
myPath.addQuadCurve(to: CGPoint(x: rect.maxX * 2/3, y: rect.maxY / 5),
                    controlPoint: CGPoint(x: rect.maxX * 0.6, y: rect.maxY / 4))

但第一条和第二条曲线的连接点还是不圆。我应该怎么做才能让它变得圆滑?

下面是结果图。

Result Image

swift uibezierpath
1个回答
2
投票

这里按照你的期望 https:/prnt.csgmyp6 我已经使用 addQuadCurve 函数来制作一条曲线。

了一个 UIViewHeight = 200 还有 Width = 300

@IBOutlet weak var centerView: UIView!

 override func viewDidLoad() {
        super.viewDidLoad()
        let centerViewW = centerView.frame.size.width. //Width Of your view
        let centerViewH = centerView.frame.size.height //Height Of your view

        let myPath: UIBezierPath = UIBezierPath()
        let drawingLayer = CAShapeLayer()
        drawingLayer.strokeColor =  UIColor.red.cgColor
        drawingLayer.fillColor = UIColor.clear.cgColor
        drawingLayer.lineWidth = 4.0

        //This is starting point from where you start drawing
        myPath.move(to: CGPoint(x: 0, y: centerViewH-25))

        //This is First Curve
        myPath.addQuadCurve(to: CGPoint(x: ((centerViewW/2)+10), y: (centerViewH/3+15)), controlPoint: CGPoint(x: 40, y: 20))

        drawingLayer.path = myPath.cgPath
        centerView.layer.addSublayer(drawingLayer)

        //This is Second Curve
        myPath.addQuadCurve(to: CGPoint(x: centerViewW, y: (centerViewH/2)), controlPoint: CGPoint(x: (centerViewW - 45), y: (centerViewH/2)+40))

        drawingLayer.path = myPath.cgPath
        centerView.layer.addSublayer(drawingLayer)
}

你只需要更新改变控制点,使其与线的斜率相匹配。

输出:-

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.