【发布时间】:2011-04-22 11:19:32
【问题描述】:
如何获得 UIView 的当前角度/旋转/弧度?
【问题讨论】:
-
我知道它应该像 myView.transformation 之类的东西......但是哇?
-
@Abizern 不是真的,他在问如何用 CGAffineTransform 做到这一点。你不能。
标签: ios cocoa-touch uiview rotation
如何获得 UIView 的当前角度/旋转/弧度?
【问题讨论】:
标签: ios cocoa-touch uiview rotation
你可以这样做......
CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a);
CGFloat degrees = radians * (180 / M_PI);
【讨论】:
斯威夫特:
// 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) )
【讨论】:
很多其他答案都参考atan2f,但鉴于我们在CGFloats 上运行,我们可以只使用atan2 并跳过不必要的中间转换:
let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
【讨论】:
对于 Swift 3,您可以使用以下代码:
let radians:Float = atan2f(Float(view.transform.b), Float(view.transform.a))
let degrees:Float = radians * Float(180 / M_PI)
【讨论】:
//对于 Swift 3:M_PI 现在折旧使用 Double.pi
let radians = atan2f(Float(yourView.transform.b), Float(yourView.transform.a));
let degrees = radians * Float(180 / Double.pi)
//对于 Swift 4:
let radians = atan2(yourView.transform.b, yourView.transform.a)
let degrees = radians * 180 / .pi
【讨论】:
在 swift 2 和 Xcode 7 中:
let RdnVal = CGFloat(atan2f(Float(NamVyu.transform.b), Float(NamVyu.transform.a)))
let DgrVal = RdnVal * CGFloat(180 / M_PI)
【讨论】:
使用扩展:
extension UIView {
var rotation: Float {
let radians:Float = atan2f(Float(transform.b), Float(transform.a))
return radians * Float(180 / M_PI)
}
}
用法:
let view = UIView()
print(view.rotation)
【讨论】: