2013-10-05 167 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),而不是在角落。這很誘人,但我會期待隨之而來的快樂。