web-dev-qa-db-fra.com

Obtenir l'angle / rotation / radian actuel pour une UIView?

Comment obtenir l'angle/rotation/radian actuel d'un UIView?

53
Hjalmar

Vous pouvez le faire de cette façon ...

CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a); 
CGFloat degrees = radians * (180 / M_PI);
108
Krishnabhadra

Rapide:

// Note the type reference as Swift is now string Strict

let radians:Double = atan2( Double(yourView.transform.b), Double(yourView.transform.a))
let degrees:CGFloat = radians * (CGFloat(180) / CGFloat(M_PI) )
14
Peter Kreinz

Pour Swift 3, vous pouvez utiliser le code suivant:

let radians:Float = atan2f(Float(view.transform.b), Float(view.transform.a))
let degrees:Float = radians * Float(180 / M_PI)
6
Rakesh Yembaram

Beaucoup d'autres réponses font référence à atan2f, mais étant donné que nous fonctionnons sur CGFloats, nous pouvons simplement utiliser atan2 et ignorez la distribution intermédiaire inutile:

Swift 4:

let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
4
Dan Loewenherz

// Pour Swift 3: M_PI est amorti maintenant Utilisez Double.pi

let radians = atan2f(Float(yourView.transform.b), Float(yourView.transform.a));
let degrees = radians * Float(180 / Double.pi)

// Pour Swift 4:

let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
4
Rohit Sisodia

Dans Swift 2 et Xcode 7:

let RdnVal = CGFloat(atan2f(Float(NamVyu.transform.b), Float(NamVyu.transform.a)))
let DgrVal = RdnVal * CGFloat(180 / M_PI)
2
Sujay U N