目前可可触摸的坐标方式在左上角,它是 0,0。我想知道是否可以“翻转”它,使 0,0 在左下角?
我希望协调系统像 cocos2d 一样,0,0 点位于左下角。是否有可能在可可触感中实现这一点?
目前可可触摸的坐标方式在左上角,它是 0,0。我想知道是否可以“翻转”它,使 0,0 在左下角?
我希望协调系统像 cocos2d 一样,0,0 点位于左下角。是否有可能在可可触感中实现这一点?
您问了关于“Cocoa”的问题,但事实上,长期以来,Cocoa 对翻转视图和未翻转视图的区别非常明显。在 Cocoa 中,您只需要重写一个方法。(而 Cocoa 中的“翻转”意味着 Cocoa Touch 执行此操作的方式。Cocoa 中的默认值——“未翻转”——是左下角的原点。)
但你不是在编程 Cocoa;你正在为 Cocoa Touch 编程。
所以,你有一个被翻转的上下文,大概是因为你是从 UIKit 获得的(你创建的 CGContexts 没有通过 UIKit 被取消翻转),你需要取消它。(或者你有一个未翻转的上下文并想要翻转它。)
无论哪种方式,解决方案都是相同的:
翻译移动原点;平移整个高度将原点移动到对角。
缩放改变轴;将 y 轴缩放为负 1 会将其翻转到相反的方向,因此向上的现在向下,反之亦然。
这就是您如何将上下文从左上角翻转(或取消翻转)到左下角,反之亦然。
不起作用或不应该尝试的事情:
geometryFlipped
在图层上设置。它影响子图层,但不影响自定义绘图。(当然,如果你所有的“绘图”都是形状图层、文本图层和普通图层,那么你可以只设置这个属性而不必担心变换。)contentsAreFlipped
在 CALayer 子类中覆盖。文档说不要这样做。transform
. 文档说,所transform
应用的坐标空间的原点位于中心(或位于anchorPoint
),而不是角落。这很诱人,但我希望随之而来的是欢闹。