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