获取UIView的当前角度/旋转/弧度?

Hja*_*mar 53 cocoa-touch rotation uiview ios

你如何获得UIView的当前角度/旋转/弧度?

Kri*_*dra 108

你可以这样做......

CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a); 
CGFloat degrees = radians * (180 / M_PI);
Run Code Online (Sandbox Code Playgroud)

  • 我会投票给你10!我碰巧遇到了这个帖子,不得不大笑,因为我完全忘记了逆三角学!正如我开始觉得我多年前的学校教育是浪费:D (3认同)

Pet*_*inz 14

迅速:

// 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) )
Run Code Online (Sandbox Code Playgroud)


Dan*_*erz 7

很多其他答案都参考了atan2f,但鉴于我们正在对CGFloats 进行操作,我们可以使用atan2并跳过不必要的中间转换:

斯威夫特 4:

let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
Run Code Online (Sandbox Code Playgroud)


Rak*_*ram 6

对于Swift 3,您可以使用以下代码:

let radians:Float = atan2f(Float(view.transform.b), Float(view.transform.a))
let degrees:Float = radians * Float(180 / M_PI)
Run Code Online (Sandbox Code Playgroud)


Roh*_*dia 6

//对于 Swift 3: M_PI 现在折旧使用 Double.pi

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

//对于Swift 4:

let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
Run Code Online (Sandbox Code Playgroud)