繁体   English   中英

如何相对于超级视图的坐标系移动旋转视图?

[英]How can I move an rotated view relative to the coordinate system of it's superview?

更改10度旋转视图的中心点时,该中心点的指定坐标将与超级视图的坐标系不匹配。

例如,当您想直接向上移动y-50,并且没有水平移动时(即x = theRotatedView.center.x),则y方向的偏移将被旋转。 视图将向上和向右移动,而不仅仅是向上。

旋转是在视图上完成的,而不是在图层上完成的。

我可以将其包装在进行运动的超级视图中,而子视图进行旋转。 然后,我在转换方面没有任何问题。 但是也许有一些简单的解决方案。 我只想移动旋转视图的中心,就好像该视图未旋转一样,也就是说,当希望将y减10时,不必担心旋转坐标。 是否有任何在坐标系之间转换的方法或函数,以便我可以只在超级视图坐标中指定中心点坐标,而将这些点或坐标应用于旋转视图的center属性时就正确了吗?

查看CGAffineTransform方法(例如CGAffineTransformMake),以更轻松的方式生成所需的转换。 您可以将旋转和平移组合在一个矩阵中。

您可以将坐标乘以转换矩阵。 这会将您的坐标放入父视图的“坐标空间”。 您还可以使用父视图的逆矩阵获取父视图中的坐标,并将其返回到“世界空间”。

http://en.wikipedia.org/wiki/Rotation_matrix

进一步阅读该页面以获取伪代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM