Cor*_*ius 34
a的当前转换UIView存储在其transform属性中.这是一个CGAffineTransform结构,你可以在这里阅读更多相关内容:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html
你可以从变换得到弧度的角度,如下所示:
CGFloat angle = atan2f(yourView.transform.b, yourView.transform.a);
Run Code Online (Sandbox Code Playgroud)
如果你想要以度为单位的角度,你需要像这样转换它:
angle = angle * (180 / M_PI);
Run Code Online (Sandbox Code Playgroud)
得到这样的比例:
CGFloat scaleX = view.transform.a;
CGFloat scaleY = view.transform.d;
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,找到了这个解决方案,但它只能部分解决我的问题。事实上,从变换中提取比例的建议解决方案:
(所有代码都在swift中)
scaleX = view.transform.a
scaleY = view.transform.d
Run Code Online (Sandbox Code Playgroud)
仅在旋转为 时有效0。
当旋转是不是0该transform.a和transform.d被旋转的影响。要获得正确的值,您可以使用
scaleX = sqrt(pow(transform.a, 2) + pow(transform.c, 2))
scaleY = sqrt(pow(transform.b, 2) + pow(transform.d, 2))
Run Code Online (Sandbox Code Playgroud)
请注意,结果始终为正。如果你也对缩放的符号(视图翻转)感兴趣,那么缩放的符号就是transform.afor x flip 和transform.dfor y flip的符号。一种继承标志的方法。
scaleX = (transform.a/abs(transform.a)) * sqrt(pow(transform.a, 2) + pow(transform.c, 2))
scaleY = (transform.d/abs(transform.d)) * sqrt(pow(transform.b, 2) + pow(transform.d, 2))
Run Code Online (Sandbox Code Playgroud)