了解convertPoint:toView:(Understanding convertPoint:

2019-07-20 15:17发布

我不太明白的方法convertPoint:toView:

在苹果公司的文档就被写

convertPoint:toView:

从接收机的坐标系指定的视图的转换点。

 - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

但什么是从一个点转换成另外一种实际上意味着什么呢?

这是否意味着在这两个边界点有不同的单位 ? 或者只是不同的价值观?

如果是后者,为什么会有这样的时候,我们可以简单地指定的值的方法contentOffset到B的?

CGPoint a = [a contentOffset];
[b setContentOffset:a];

如何convertPoint:toView:从简单的分配不同contentOffset ? 还是我误解了整个概念? 什么是转换点实际上做? 当应这种方法被使用?

Answer 1:

每一个的UIView都有自己的坐标系。 所以,如果你有一个包含另一个UIView_2一个UIView_1,他们都有在其中一个点(10,10)。

convertPoint:toView:允许开发人员采取的一个点在一个视图和转换点到另一个视图的坐标系。

例如:含有厂景视图2。 视图2的左上角位于厂景点(10,10),或者不如说view2.frame.orgin = {10,10}。 那{} 10,10总部设在厂景坐标系。 到现在为止还挺好。

用户触摸在点{20,20}的视图2内部的视图2。 现在,这些坐标是view2的坐标系。 您现在可以使用covertPoint:toView:转换{} 20,20进厂景的坐标系。 接触点= {20,20}

CGPoint pointInView1Coords = [view2 convertPoint:touchPoint toView:view1];

所以,现在pointInView1Coords应{} 30,30在厂景坐标系。 现在是在这个例子中只是简单的数学,但也有东西,有助于转换种种。 变换和缩放浮现在脑海中。

阅读关于UIView的框架,范围和中心。 他们都是相关的,他们处理的坐标系的视图。 它的混乱,直到你开始做的东西他们。 请记住这个框架和中心是母公司的坐标系统相同。 边界是视图的坐标系统相同。

约翰



文章来源: Understanding convertPoint:toView: