在CGAffineTransform之后,在父级/子级UIView之间转换坐标

33

在我开始手动操作之前,我想问一下是否可以从框架中获得帮助。

我有一个包含地图的UIView。父UIView还持有地图的一些图例。最初,我在地图视图中定义了一些坐标,例如(100,40),并在父视图中放置了一个图形(类似于Google Maps中的别针等)。父视图和子视图都是300x200,并具有相同的起点。这意味着(100,40)在两个视图中是相同的点。

现在,我使用CGAffineTransform缩放和移动子UIView(即地图),坐标(100, 40)现在位于其他位置。父视图在这里实际上是一个遮罩。

我能否使用CGAffineTransform矩阵或框架的另一部分来计算并通知父视图现在应该放置别针的位置?

即在子视图中的(100,400)与父视图中的(100,40)相比,在变换后它代表什么?

感谢你提供的建议或帮助。

子UIView的动画

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.8f, 1.8f);
    worldMap.transform = transform;
    worldMap.bounds.origin = newPos;
    [UIView commitAnimations];
1个回答

73

UIView的-convertPoint:toView:-convertPoint:fromView:方法应该可以满足您的需求。


Costique是正确的,没有必要自己进行矩阵数学计算。你有整个视图层次结构系统来帮助你。 - NSResponder
答案是正确的,但如果您解释一下从View到View的区别,那就太好了。 - Thellimist
3
toView 将调用视图的坐标系转换到目标视图的坐标系。 - TheGazzardian
3
fromView 将源视图空间转换为调用视图空间。 - TheGazzardian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接