如何获取倾斜图像的当前角度?获取UIView的当前倾斜角度
我用歪曲它的代码是:
CGAffineTransform t = CGAffineTransformMake(1.0, 0.0, tan(angle*(M_PI/480)), 1.0, 0.0, 0.0);
如何获取倾斜图像的当前角度?获取UIView的当前倾斜角度
我用歪曲它的代码是:
CGAffineTransform t = CGAffineTransformMake(1.0, 0.0, tan(angle*(M_PI/480)), 1.0, 0.0, 0.0);
试试这个:
CGFloat skew_c = [(NSNumber *)[view valueForKeyPath:@"layer.transform.c"] floatValue];
的keyPath是guesstimated,但应工作。 CGAffineTransformMake docs。
编辑:
看起来CGAffineTransform被转换成4×4矩阵CATransform3D
。
transform
属于CALayer
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的公式。
你可以尝试这样的事情:
CGFloat angle = [(NSNumber *)[view valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
它不起作用,结果总是0 – xXDraklordXx
斯克拉姆看法是正确的,只有的keyPath是错误的。 –
试试这个:
CGFloat radians = atan2f([self myview].transform.b, [self myview].transform.a);
有了这个,你可以得到任何UIView
的当前角度。
保持摇...喜欢... :)
来自1位用户的令人印象深刻的答案! – Fattie
谢谢。 Fattie –
我不明白怎么做呢=( – xXDraklordXx
我也想弄明白,问题是你给'CGAffineTransformMake'的参数被翻译成另一种矩阵,所以你不能得到他们通过简单地阅读他们回来[3D投影 - 维基](http://en.wikipedia.org/wiki/3D_projection#Perspective_projection)也是有用的,但相当复杂。 –
这对我来说太复杂了 – xXDraklordXx