我希望获得比例因子和旋转角度视图。我已经将CGAffineTransform应用于该视图。
答案 0 :(得分:30)
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);
如果你想要以度为单位的角度,你需要像这样转换它:
angle = angle * (180 / M_PI);
获得如下比例:
CGFloat scaleX = view.transform.a;
CGFloat scaleY = view.transform.d;
答案 1 :(得分:0)
在Swift 3中:
let rotation = atan2(view.transform.b, view.transform.a)
答案 2 :(得分:0)
我遇到了同样的问题,找到了解决方案,但是它只能部分解决我的问题。 实际上,提出的用于从变换中提取比例的解决方案:
(所有代码均迅速输入)
scaleX = view.transform.a
scaleY = view.transform.d
仅在旋转为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))
请注意,结果始终是肯定的。如果您还对缩放的符号(视图已翻转)感兴趣,则缩放的符号是transform.a
(对于x翻转)和transform.d
(对于y翻转)的符号。继承符号的一种方法。
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))