在Swift中,这两种情况下的旋转有区别吗?



示例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

最新更新