2013-10-05 125 views
0

可可触摸的方式坐标是在左上角,它是0,0。我想知道的是,如果有可能“翻转”它,所以0,0在左下角?翻转Y轴?

我希望协调系统像cocos2d 0,0点是在左下角。是否有可能在可可触摸中发生这种情况?

+0

请提供更多的上下文:您是否使用CG ...例程绘制自己的内容?轮换应该如何发挥,或者应该考虑轮换? [这个主题可能是相关的](https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html),取决于你在做什么。 – dasblinkenlight

+0

我希望它像在Cocos2d中一样,y 0点在底部而不在屏幕的顶部。为什么你会倒下?没有意识 – Arbitur

+0

是什么让你认为我低估了你的问题?我不认为这是明确的,但我也认为这是不够的,被低估。 – dasblinkenlight

回答

1

您问了关于“Cocoa”的问题,但事实上,Cocoa很长一段时间在翻转视图和未翻转视图之间有很明显的区别。在可可,你只需要override a method。 (和Cocoa中的“翻转”意味着Cocoa Touch的做法。默认的“未翻转”在Cocoa中是左下角的原点。)

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

所以,你有一个翻转的上下文,大概是因为你从UIKit中获得了它(没有经过UIKit创建的CGContexts没有翻转),你需要解开它。 (或者你有一个unflipped背景和想翻页吧)

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

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

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

缩放改变轴;通过负值1缩放y轴将其翻转为相反方向,所以现在是下降,反之亦然。

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

东西,将无法正常工作或不应该尝试一下:

  • 层上设置geometryFlipped。它影响子图层,但不影响自定义绘图。 (当然,如果所有的“绘图”都是形状图层和文本图层以及普通图层,那么您可以只设置此属性而不用担心变换。)
  • 在CALayer子类中重写contentsAreFlipped。文件说不要这样做。
  • 设置视图或其图层的transform。该文档说明transform适用的坐标空间的起点位于中心(或anchorPoint),而不是在角落。这很诱人,但我会期待随之而来的快乐。