Reputation: 1941
How do you get the current angle/rotation/radian a UIView has?
Upvotes: 60
Views: 29658
Reputation: 847
Using extensions:
extension UIView {
var rotation: Float {
let radians:Float = atan2f(Float(transform.b), Float(transform.a))
return radians * Float(180 / M_PI)
}
}
Usage:
let view = UIView()
print(view.rotation)
Upvotes: 0
Reputation: 895
//For Swift 3: M_PI is depreciated now Use Double.pi
let radians = atan2f(Float(yourView.transform.b), Float(yourView.transform.a));
let degrees = radians * Float(180 / Double.pi)
//For Swift 4:
let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
Upvotes: 6
Reputation: 11236
A lot of the other answers reference atan2f
, but given that we're operating on CGFloat
s, we can just use atan2
and skip the unnecessary intermediate cast:
let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
Upvotes: 8
Reputation: 433
For Swift 3, you could use the following code:
let radians:Float = atan2f(Float(view.transform.b), Float(view.transform.a))
let degrees:Float = radians * Float(180 / M_PI)
Upvotes: 6
Reputation: 5340
In swift 2 and Xcode 7 :
let RdnVal = CGFloat(atan2f(Float(NamVyu.transform.b), Float(NamVyu.transform.a)))
let DgrVal = RdnVal * CGFloat(180 / M_PI)
Upvotes: 2
Reputation: 8628
Swift:
// 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) )
Upvotes: 17
Reputation: 34275
You can do it this way...
CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a);
CGFloat degrees = radians * (180 / M_PI);
Upvotes: 116