获取UIView的当前倾斜角度

时间:2012-06-10 18:41:37

标签: iphone xcode uiview cgaffinetransform skew

如何获得倾斜图像的当前角度?

我用来扭曲它的代码是:

CGAffineTransform t = CGAffineTransformMake(1.0, 0.0, tan(angle*(M_PI/480)), 1.0, 0.0, 0.0);

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

CGFloat angle = [(NSNumber *)[view valueForKeyPath:@"layer.transform.rotation.z"] floatValue];

答案 1 :(得分:1)

试试这个:

CGFloat radians = atan2f([self myview].transform.b, [self myview].transform.a);

使用此功能,您可以获得任意UIView的当前角度。

继续摇摆......享受......:)

答案 2 :(得分:0)

试试这个:

CGFloat skew_c = [(NSNumber *)[view valueForKeyPath:@"layer.transform.c"] floatValue];

Keypath是猜测,但应该工作。 CGAffineTransformMake docs

编辑:

看起来CGAffineTransform被翻译成4x4 CATransform3D矩阵。

transformCALayer of CATransform3D类型的属性。

这意味着您可以通过以下调用访问m11 .. m44参数:

CGFloat m11 = [(NSNumber *)[view valueForKeyPath:@"layer.transform.m11"] floatValue];
...
...
CGFloat m44 = [(NSNumber *)[view valueForKeyPath:@"layer.transform.m44"] floatValue];

你仍然需要做一些计算才能得到你的偏斜因子。您可以从this great answer派生c_factor的等式。