示例1:
let halfPie = Double.pi / 2
var pieCount: Int = 0
let rotationNum = (pieCount % 4) + 1
let angle = halfPie * Double(rotationNum)
UIView.animate(withDuration: 1, animations: { [weak self] in
self?.containerView.transform = CGAffineTransform(rotationAngle: CGFloat(angle))
}) { [weak self] _ in
self?.pieCount += 1
}
示例2:
let halfPie = 1.5707963267949
var pieCount: Int = 1
let angle = halfPie * Double(pieCount)
UIView.animate(withDuration: 1, animations: { [weak self] in
self?.containerView.transform = CGAffineTransform(rotationAngle: CGFloat(angle))
}) { [weak self] _ in
self?.pieCount += 1
}
两者之间的区别在于,第二个继续增加,而第一个在PIE * 2时保持数量达到最大值。有没有理由用一种方式来实现它呢?它们似乎都在做同样的事情。全局初始化pieCount
没有区别。
如果你的动画为180°或540°,动画将是相同的,因为视图将做最少的移动来获得正确的位置。
另外,你不应该硬编码halfPie
,你应该使用Double.pi/2