繁体   English   中英

在CGAffineTransform之后获得UIView的中心

[英]Get center of a UIView after CGAffineTransform

假设我有一个小的UIView作为一个更大的UIView的子/子视图,那个孩子可以通过一些CGAffineTransforms移动。 父母如何知道该视图的真正“中心”在其自己的坐标系中? 我已经尝试将convertPoint例程与child.center返回的内容一起使用,但是它不起作用......在这种情况下,“中心”完全是假的还是我只是使用了错误的方法?

编辑:

做了一些测试后,我注意到以下几点:

UIViews没有anchorPoint属性,但它们有一个center属性。 应用变换后,始终会正确计算center属性,但转换变换除外,您必须执行以下操作:

CGPoint realCenter = CGPointMake(myView.center.x + myView.frame.origin.x, ...);

至于CALayer ,他们确实有一个anchorPoint属性,但是他们缺少一个中心属性。 因此,您要做的是通过对position属性,anchorPoint属性和图层的转换进行计算来手动计算中心。

我无法提供任何代码,因为我不确定您使用的是哪种方法,但要将其包装起来,您必须以任何方式推出自己的中心计算器。


请仔细查看下面的图片(斯坦福iPhone开发课程幻灯片提供):

在应用任何轮换之前:

在此输入图像描述

施加45°旋转后:

在此输入图像描述

结论:

请注意旧中心是如何(300,225)和新中心,而不是新的! 一样的。 如果你正确地做了一切,你的中心应该是一样的。 如果您在视图中有另一个要计算的点,那么您自己就必须这样做。

另请注意框架如何从(200,100,200,250)更改为(140,65,320,320)。 这就是UIKit如何发挥它的魔力。

暂无
暂无

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

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