gpt4 book ai didi

swift : Animate CALayer Transform

转载 作者:行者123 更新时间:2023-11-28 06:45:47 26 4
gpt4 key购买 nike

我有一个 CALayer 圆圈,我想为变换设置动画。我希望它从 0 开始,然后慢慢变大到原来的大小。这是我所拥有的:

expandingCircleLayer = CAShapeLayer()
let radius: CGFloat = (self.view?.bounds.width)! * 0.10
expandingCircleLayer!.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 2.0 * radius, height: 2.0 * radius) , cornerRadius: radius).CGPath
expandingCircleLayer!.fillColor = UIColor.redColor().CGColor

动画完成后,我还要运行一段代码。我知道这可以通过 SpriteNode 实现,但我不太确定如何使用 CALayer 实现。

请帮忙!

最佳答案

我刚刚使用这里找到的一个很好的代码块来完成这个循环节点:Circular progress timer/bar in iOS using SpriteKit

类结构很简单:

import SpriteKit

class CircularProgressNode : SKShapeNode
{
private var radius: CGFloat!
private var startAngle: CGFloat!

init(radius: CGFloat, color: SKColor, width: CGFloat, startAngle: CGFloat = CGFloat(M_PI_2)) {
super.init()

self.radius = radius
self.strokeColor = color
self.lineWidth = width
self.startAngle = startAngle

self.updateProgress(0.0)
}

required init(coder aDecoder: NSCoder) {
fatalError(“init(coder:) has not been implemented”)
}

func updateProgress(percentageCompleted: CGFloat) {
let progress = percentageCompleted <= 0.0 ? 1.0 : (percentageCompleted >= 1.0 ? 0.0 : 1.0 - percentageCompleted)
let endAngle = self.startAngle + progress * CGFloat(2.0 * M_PI)

self.path = UIBezierPath(arcCenter: CGPointZero, radius: self.radius, startAngle: self.startAngle, endAngle: endAngle, clockwise: true).CGPath
}
}

关于 swift : Animate CALayer Transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469653/

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