2011-06-16 41 views
1

我剛剛開始iOS繪圖編程,發現座標系與Mac OS X不同,基本上iOS上的原點位於左上角而不是左下角蘋果電腦。只是想知道是否有人知道蘋果爲什麼會做出這樣的改變,並且它會改變Mac的未來嗎?我還在文檔中看到iOS上的座標系不能翻轉,所以我需要重寫代碼?ios視圖座標系

+2

是的,你需要調整你的代碼。 – PengOne 2011-06-16 17:23:27

回答

2

您對座標系是否正確。如果我沒有記錯,原因是大多數平臺的繪圖系統使用左上角作爲座標原點。 Mac OS X使用較低的左側,因爲這是NeXT使用的。

它可能在未來的Mac上不會改變,因爲那樣每個人都必須完全重寫他們的繪圖代碼。

+1

從Windows更改爲Mac時很難適應,現在我必須回去! (瘋狂地尖叫) – 2011-06-16 17:29:42

1

我發現了一個簡單的方法來解決這個問題。而是採用了標準的CALayer對象作爲你的基地層,創建自己的類(基於CALayer的),有一個電話:

- (void)layoutSublayers; 
{ 
    for(sprite* aSprite in self.sublayers) 
    { 
     // -(y pos -1) flips the coordinate system to start in the lower left 
     aSprite.position = CGPointMake(aSprite.actualPosition.x, -(aSprite.actualPosition.y - 1.0)); 
    } 
} 

精靈僅僅是一個的CALayer類的添加CGPoint財產,actualPosition。更新該值以移動精靈。

+0

'-layoutSublayers'被非常頻繁地調用。當然,第二次被調用時,你會將每一層的y位置再次翻回原來的位置? – 2012-05-13 21:35:39

+0

糟糕,我在複製代碼時犯了一個錯誤。我正在將這些問題的其他部分放在一邊,因爲它們與問題無關。我想我有點兒超前了。更新。 – charliehorse55 2012-05-13 22:07:30