我剛剛開始iOS繪圖編程,發現座標系與Mac OS X不同,基本上iOS上的原點位於左上角而不是左下角蘋果電腦。只是想知道是否有人知道蘋果爲什麼會做出這樣的改變,並且它會改變Mac的未來嗎?我還在文檔中看到iOS上的座標系不能翻轉,所以我需要重寫代碼?ios視圖座標系
ios視圖座標系
回答
您對座標系是否正確。如果我沒有記錯,原因是大多數平臺的繪圖系統使用左上角作爲座標原點。 Mac OS X使用較低的左側,因爲這是NeXT使用的。
它可能在未來的Mac上不會改變,因爲那樣每個人都必須完全重寫他們的繪圖代碼。
從Windows更改爲Mac時很難適應,現在我必須回去! (瘋狂地尖叫) – 2011-06-16 17:29:42
我發現了一個簡單的方法來解決這個問題。而是採用了標準的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。更新該值以移動精靈。
'-layoutSublayers'被非常頻繁地調用。當然,第二次被調用時,你會將每一層的y位置再次翻回原來的位置? – 2012-05-13 21:35:39
糟糕,我在複製代碼時犯了一個錯誤。我正在將這些問題的其他部分放在一邊,因爲它們與問題無關。我想我有點兒超前了。更新。 – charliehorse55 2012-05-13 22:07:30
是的,你需要調整你的代碼。 – PengOne 2011-06-16 17:23:27