2010-08-15 36 views
5

From the Apple docs:爲什麼石英2D文本翻轉變換iPhone上

需要在iOS中,必須應用翻轉變換到當前圖形上下文爲了使文本如圖16-1所示定向。 [翻轉變換]包括反轉Y軸並將原點移動到屏幕底部。清單16-2顯示瞭如何在iOS視圖的drawRect:方法中應用這種轉換。然後這個方法調用清單16-1中相同的MyDrawText方法。

爲什麼?這看起來很尷尬。

回答

7

當我在this answer中展開時,Quartz 2D座標系使用左下角作爲(0,0),這與Mac上的窗口座標系相同。 iPhone使用左上角作爲其視圖佈局的(0,0),所以支持UIViews的圖層將其座標系繞Y軸翻轉。

如果您使用NSString UIKit擴展將文本繪製到UIView的背景層中,它將被正確定向,因爲該翻轉被考慮在內。但是,如果使用較低級別的Quartz文本繪圖,則需要首先關於Y軸的座標系翻轉(以便0,0再次位於左下角),以正確定位事物。

正常核心圖形上下文(用於繪製圖像或用於存儲或顯示的PDF)不會反轉,所以情況正好相反。普通的Quartz文本會很好的渲染,但是使用NSString UIKit擴展繪製的東西需要先使座標系反轉。這會導致開發人員在繪製到屏幕上時圖像和文本看起來很正確但在保存到磁盤時最終倒置。

至於爲什麼這樣做,這是任何人的猜測。兩種座標系在某些情況下都有其優點。不過,這很容易糾正。

+0

不錯答案brad .... +1 :) – 2012-04-27 09:28:29