在Swift中,这两种情况下的旋转存在差异

时间:2016-11-17 17:07:25

标签: swift performance animation

示例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在全球范围内初始化。

1 个答案:

答案 0 :(得分:1)

没有区别。

如果您将动画设置为180°或540°,则动画将是相同的,因为视图将进行最少量的移动以到达正确的位置。

在旁注中,您不应该使用halfPieDouble.pi/2进行硬编码