2012-05-08 30 views
3

我正在構建一個基於iOS的核心文本應用程序(iOS 5,iPad),並且有一個視圖,我在其中執行一些印刷計算(在drawRect中)。CGContextConvertRectToDeviceSpace可以在視網膜設備上正常工作嗎?

我注意到,當我使用CGContextConvertRectToDeviceSpace時,我在視網膜設備上得到的結果是非視網膜設備的兩倍。我的理解是,在drawRect中應用了隱式變換,應該隱藏任何視網膜/非視網膜設備的差異,所以我很困惑爲什麼我應該看到任何差異。

更具體地說,我試圖計算用戶空間座標中給定CTLine的用戶座標中的位置。我首先使用CTLineGetTypographicBounds作爲我的線,然後在CGContextConvertRectToDeviceSpace中使用這些值來得到矩形...但是我得到的矩形在視網膜設備上的寬度和高度是非視網膜設備的兩倍。有什麼我失蹤?

回答

1

我注意到,當我使用CGContextConvertRectToDeviceSpace時,我在視網膜設備上得到的結果是非視網膜設備的兩倍。

聽起來很正常。 「設備空間」表示輸出設備上的實際像素,在這種情況下是視網膜顯示器。它通常比CGContext的用戶空間座標系大2倍。

通常很少需要轉換到設備空間或從設備空間轉換 - 只有在絕對需要將繪圖與實際像素對齊時纔會這樣做。

你想用CGContextConvertRectToDeviceSpace完成什麼?可能有其他選擇。

相關問題