gpt4 book ai didi

swift - Swift 3 中的可扩展 UIBezier

转载 作者:可可西里 更新时间:2023-11-01 00:59:03 29 4
gpt4 key购买 nike

我正在尝试设计一个可缩放的 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()

}

}

这是结果:

enter image description here


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

enter image description here

正如您在上面所看到的,我们为 UIBezierPath 设置了一个宽度和高度,但是,代码显示的是 UIBezierPath 的点...

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

这可能吗?需要帮助!

最佳答案

假设您创建了一个圆弧,为此目的使用贝塞尔曲线似乎有点矫枉过正。

有了 UIBezierPath,你可以使用这个函数:

func addArcWithCenter(_ center: CGPoint, radius 半径:CGFloat, startAngle startAngle: CGFloat, endAngle endAngle:CGFloat, 顺时针方向:Bool)

并设置一个半径,以及必要的开始和结束角度。

如果您真的必须为此目的使用三次贝塞尔曲线,您应该使用等于 0.5522847498 的魔数(Magic Number) kappa,这是由三次贝塞尔曲线构建的圆的控制点。

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

http://www.trilithon.com/download/AnimatedRingView.zip

希望对您有所帮助。

关于swift - Swift 3 中的可扩展 UIBezier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512620/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com