如何转换 UIView 坐标以在 drawRect 中使用?

Posted

技术标签:

【中文标题】如何转换 UIView 坐标以在 drawRect 中使用?【英文标题】:How to transform UIView coordinates to use in drawRect? 【发布时间】:2012-09-25 07:26:20 【问题描述】:

我需要在自定义 UIView 上画一条线(即从左上角到右下角)。但是,据我所知,坐标系是不同的。

如何在这两个坐标系之间进行转换?

【问题讨论】:

无论如何它总是一个笛卡尔坐标系。只是原点、方向和方向可能会有所不同。 :) 【参考方案1】:

只要我们谈论的 UIView 对象是其他一些 UIView 对象的子视图 - 这是很正常的情况 - 每个视图都相对于它的下一个超级视图定位。 superview的左上角是(0,0)。

对于大多数运行良好的应用程序。在相当罕见的情况下,可能需要将坐标从一个视图的子视图坐标系转换到另一个视图的坐标系。 UIView 提供方法

– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:

对于这种用法。他们工作得很好。在使用它们之前,您应该重新考虑是否需要这样做,并评估您当前的视图层次结构是否可以使用重新设计。 :)

【讨论】:

【参考方案2】:

不管坐标系是什么,你为什么不直接画呢?不要关心坐标系。

【讨论】:

确实,您要绘制的东西并不复杂。试一试,如果不正确,您将能够第二次获得它。哦,坐标是相同的左上角 = (0,0)。

以上是关于如何转换 UIView 坐标以在 drawRect 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VC.m 尝试加载之前保存使用 drawRect 绘制的图像?

如何在drawRect中获取UIView大小

如何使用 drawRect 覆盖在 UIView 子类的某些区域中获得透明度

我正在使用 drawRect 实现 UIView 子类:如何绘制按钮?

将 UIView 坐标转换为横向

UIView 边界/框架与 drawRect 不匹配