1
按照documentation为rotated(by:)
:如何控制Swift180º以上的动画旋转方向?
角度
角度,以弧度为单位,通过该旋转仿射变换。在iOS中,正值指定逆时针旋转,负值指定顺时针旋转。
这已经引起了很大的混乱,并已partly answered,但即使我们接受的坐标系统被翻转(和刚做的文档说的正好相反),但它仍然在动画中提供不一致的结果。
旋转方向 - 顺时针或逆时针方向 - 依赖于目标旋转到当前旋转的接近:
<= 180º
动画顺时针> 180º
动画逆时针
使用UIView.animate
或UIViewPropertyAnimator
显示不一致性:
// Animates CLOCKWISE
UIView.animate(withDuration: 2.0) {
let radians = Angle(179).radians // 3.12413936106985
view.transform = view.transform.rotated(by: CGFloat(radians))
}
// Animates COUNTER-CLOCKWISE
UIViewPropertyAnimator(duration: 2, curve: .linear) {
let radians = Angle(181).radians // 3.15904594610974
view.transform = view.transform.rotated(by: CGFloat(radians))
}
// Does not animate
UIViewPropertyAnimator(duration: 2, curve: .linear) {
let radians = Angle(360).radians // 6.28318530717959
view.transform = view.transform.rotated(by: CGFloat(radians))
}
180顺时针方向:'让弧度=角度(180).radians'康特顺时针180: '让弧度=角度(-540).radians' – Arvis