[英]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.