The*_*ken 0 iphone objective-c subview uiview ios
我正在使用CGAffineTransformMakeRotation其transform属性旋转子视图.稍后,我需要了解子视图已旋转了多远.我意识到我可以简单地使用int来跟踪它,但有一种简单的方法来获得子视图的当前旋转吗?
CGAffineTransformMakeRotation被明确定义返回与变换的COS(角)矩阵a值,罪(角度)b,等等(和,考虑到变换的工作方式,这就是它真正能做的唯一的事).
因此,您可以通过执行一些简单的反三角函数来计算当前旋转.atan2可能是使用的东西,因为它会自动适当地找出象限.
所以,例如
- (float)currentAngleOfView:(UIView *)view
{
CGAffineTransform transform = view.transform;
return atan2f(transform.b, transform.a);
}
Run Code Online (Sandbox Code Playgroud)
因为这将涉及以适当的方式划分a和b字段的反正切,即使您应用缩放(只要它对每个轴相同)或转换,该方法也将继续工作.
如果你想应用更复杂或任意的转换,那么事情会变得复杂得多.您将要了解如何计算普通矩阵.从记忆中我觉得你想要这个调子,这听起来很有趣.
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |