Swift 3中的可缩放UIBezier

Swift 3中的可缩放UIBezier,swift,swift2,core-graphics,uibezierpath,swift3,Swift,Swift2,Core Graphics,Uibezierpath,Swift3,我正在尝试设计一个可伸缩的UIBezier 这是我的Swift代码: @IBDesignable class AnimatedRingView: UIView { override func draw(_ rect: CGRect) { //// Color Declarations let strokeColor = UIColor(red: 1.000, green: 0.706, blue: 0.004, alpha: 1.000)

我正在尝试设计一个可伸缩的
UIBezier

这是我的Swift代码:

@IBDesignable
class AnimatedRingView: UIView {


     override func draw(_ rect: CGRect) {
        //// Color Declarations
        let strokeColor = UIColor(red: 1.000, green: 0.706, blue: 0.004, alpha: 1.000)

        //// bezier Drawing
        let bezierPath = UIBezierPath()
        bezierPath.move(to: CGPoint(x: 48.93, y: 266.07))
        bezierPath.addCurve(to: CGPoint(x: 48.93, y: 53.93), controlPoint1: CGPoint(x: -9.64, y: 207.49), controlPoint2: CGPoint(x: -9.64, y: 112.51))
        bezierPath.addCurve(to: CGPoint(x: 261.07, y: 53.93), controlPoint1: CGPoint(x: 107.51, y: -4.64), controlPoint2: CGPoint(x: 202.49, y: -4.64))
        bezierPath.addCurve(to: CGPoint(x: 261.07, y: 266.07), controlPoint1: CGPoint(x: 319.64, y: 112.51), controlPoint2: CGPoint(x: 319.64, y: 207.49))
        bezierPath.addLine(to: CGPoint(x: 261.07, y: 266.07))
        bezierPath.lineCapStyle = .round;

        bezierPath.lineJoinStyle = .round;

        strokeColor.setStroke()
        bezierPath.lineWidth = 10
        bezierPath.stroke()

     }

}
结果是:


我的问题是: 为了节省时间,我通过PaintCode创建了
UIBezierPath

正如您在上面所看到的,对于
UIBezierPath
,我们有一个宽度和高度,但是,代码显示在
UIBezierPath
的点上

如何创建一个大小变量,通过自动识别
UIBezierPath
点的代码(或检查器)分配值?


这可能吗?需要帮助

如果您创建了一个圆弧,那么使用贝塞尔曲线来实现这一目的似乎有些过分

通过UIBezierPath,您可以使用以下功能:

func addarchwithcenter(ucenter:CGPoint, 半径:CGFloat, startAngle startAngle:CGFloat, endAngle endAngle:CGFloat, 顺时针:Bool)

并设置半径,以及必要的起点和终点角度

如果你真的必须使用立方贝塞尔,你应该使用魔法数kappa,它等于0.5522847498,这是由立方贝塞尔构成的圆的控制点

我已经在我的网站上放置了一个小演示,演示我正在描述的内容:

希望对您有所帮助。

贝塞尔对象不支持将变量附加到其尺寸,但您可以使用具有自定义开始/结束角度的椭圆形对象


-PaintCode支持

您可以创建一个大小变量,并将其连接到宽度和高度。您有一个例子吗?我的意思是,在PaintCode工具的左侧,您可以看到变量面板。您可以添加一个大小变量,并将该变量拖动到右侧的x和y字段或w,h字段。这是不可能的:非常感谢!正是我需要的!