Kie*_*per 3 iphone uiview cgaffinetransform ios
假设我有一个小的UIView作为一个更大的UIView的子/子视图,那个孩子可以通过一些CGAffineTransforms移动.父母如何知道该视图的真正"中心"在其自己的坐标系中?我已经尝试将convertPoint例程与child.center返回的内容一起使用,但它无法正常工作......在这种情况下,"中心"完全是假的还是我只是使用了错误的方法?
编辑:
做了一些测试后,我注意到以下几点:
UIViews没有anchorPoint属性,但它们有一个center属性.应用变换后,始终会正确计算center属性,但转换变换除外,您必须执行以下操作:
CGPoint realCenter = CGPointMake(myView.center.x + myView.frame.origin.x, ...);
Run Code Online (Sandbox Code Playgroud)
至于CALayers,它们确实有一个anchorPoint属性,但它们缺少一个中心属性.因此,您要做的是通过对position属性,anchorPoint属性和图层的转换进行计算来手动计算中心.
我无法提供任何代码,因为我不确定您使用的是哪种方法,但要将其包装起来,您必须以任何方式推出自己的中心计算器.
请仔细查看下面的图片(斯坦福iPhone开发课程幻灯片提供):
在应用任何轮换之前:

施加45°旋转后:

结论:
请注意旧中心是如何(300,225)和新中心,而不是新的!一样的.如果你正确地做了一切,你的中心应该是一样的.如果您在视图中有另一个要计算的点,那么您自己就必须这样做.
另请注意框架如何从(200,100,200,250)更改为(140,65,320,320).这就是UIKit如何发挥它的魔力.
| 归档时间: |
|
| 查看次数: |
3332 次 |
| 最近记录: |