【问题标题】:Quartz 2D - get degrees of rotation from transform property?Quartz 2D - 从变换属性获取旋转度数?
【发布时间】:2010-04-29 19:46:01
【问题描述】:

我有一些 UIView 和几个用户创建的子视图。用户可以移动和旋转子视图。我正在使用 UIView 的 transform 属性来完成此操作。我想保存“文档”以便以后重新创建它。

我目前正在将转换属性连同其他一些数据一起写到一个文件中。但是转换属性是 6 个数字集,而不是我想以某种方式获取用户所做的旋转度数并保存。

有什么方法可以进行变换并恢复创建变换的总旋转?显然,当用户在屏幕上移动对象时,完成了许多小的变换。

【问题讨论】:

    标签: iphone rotation quartz-graphics transform


    【解决方案1】:

    还有比卢修斯所指的数学更简单的方法。您可以使用 Core Animation 提供的辅助 keypath 来提取 UIView 支持层的当前旋转:

    CGFloat rotationAngle =  [[view.layer valueForKeyPath:@"transform.rotation.z"] floatValue];
    

    这将为您提供视图的当前旋转,以弧度为单位。请注意,这会报告第一个顺时针旋转半圆的正值,而第二个为负值,因此您需要在计算中考虑到这一点。

    【讨论】:

    • 这很容易实现。谢谢!
    【解决方案2】:

    是的,请继续阅读 The transformation matrix for an affine transformation。因此,您需要找出变换的象限(它所在的圆的 90 度部分),并取 sin() 的倒数,即 cosecant(),以及 cos() 的倒数,是矩阵的ac 的割线()。我自己没有做过,但看起来很容易。

    【讨论】:

    • 我已经有一段时间没有做过几何了。有时间我一定要试一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多