1

目前可可触摸的坐标方式在左上角,它是 0,0。我想知道是否可以“翻转”它,使 0,0 在左下角?

我希望协调系统像 cocos2d 一样,0,0 点位于左下角。是否有可能在可可触感中实现这一点?

4

1 回答 1

4

您问了关于“Cocoa”的问题,但事实上,长期以来,Cocoa 对翻转视图和未翻转视图的区别非常明显。在 Cocoa 中,您只需要重写一个方法。(而 Cocoa 中的“翻转”意味着 Cocoa Touch 执行此操作的方式。Cocoa 中的默认值——“未翻转”——是左下角的原点。)

但你不是在编程 Cocoa;你正在为 Cocoa Touch 编程。

所以,你有一个被翻转的上下文,大概是因为你是从 UIKit 获得的(你创建的 CGContexts 没有通过 UIKit 被取消翻转),你需要取消它。(或者你有一个未翻转的上下文并想要翻转它。)

无论哪种方式,解决方案都是相同的:

  1. 按上下文/视图的整个高度向上/向下平移(正 y)。
  2. 将 y 轴缩放 -1。

翻译移动原点;平移整个高度将原点移动到对角。

缩放改变轴;将 y 轴缩放为负 1 会将其翻转到相反的方向,因此向上的现在向下,反之亦然。

这就是您如何将上下文从左上角翻转(或取消翻转)到左下角,反之亦然。

不起作用或不应该尝试的事情:

  • geometryFlipped在图层上设置。它影响子图层,但不影响自定义绘图。(当然,如果你所有的“绘图”都是形状图层、文本图层和普通图层,那么你可以只设置这个属性而不必担心变换。)
  • contentsAreFlipped在 CALayer 子类中覆盖。文档说不要这样做。
  • 设置视图或其图层的transform. 文档说,所transform应用的坐标空间的原点位于中心(或位于anchorPoint),而不是角落。这很诱人,但我希望随之而来的是欢闹。
于 2013-10-05T20:09:27.817 回答