【问题标题】:In what contexts is the coordinate space on iOS the (unflipped) default?在什么情况下,iOS 上的坐标空间是(未翻转的)默认值?
【发布时间】:2026-02-16 00:45:01
【问题描述】:

根据documentation for CGRect

在默认的Core Graphics坐标空间中,原点位于 在矩形的左下角,矩形延伸 朝向右上角。如果上下文有 翻转坐标空间——通常在 iOS 上是这样——原点在 左上角,矩形向右下角延伸 角落。

我一直认为 iOS 上的坐标系从左上角开始,但在阅读后,它是翻转的,而不是默认坐标空间是有道理的。您不会像在 iOS 上那样考虑笛卡尔图上的点,Y 值的加法是向下移动的,而不是向上移动的。

文档说它“经常如此”,那么 iOS 上什么时候不是这种情况? Core Graphics 默认的坐标空间是在哪些平台上?

【问题讨论】:

    标签: ios core-graphics cgrect


    【解决方案1】:

    在 iOS 和 UIKit 中,原点位于左上角,正 y 值朝向屏幕底部。

    但对于较低级别的 Quartz API,原点位于左下角,y 值朝屏幕顶部上升。

    这在标题为Drawing to a View Graphics Context in iOS 的部分下的Quartz 2D Programming Guide 中有介绍。

    整个 UIKit 使用的默认坐标系与 Quartz 使用的坐标系不同。在 UIKit 中,原点位于左上角,正 y 值指向下方。 UIView 对象通过将原点平移到视图的左上角并通过将其乘以 -1 来反转 y 轴来修改 Quartz 图形上下文的 CTM 以匹配 UIKit 约定。有关修改坐标系的更多信息以及您自己的绘图代码中的含义,请参阅Quartz 2D Coordinate Systems

    所以“通常情况”是在使用 UIKit 时。使用较低级别的 Quartz API 时并非如此。

    【讨论】:

      最近更新 更多