之前,我問我的問題,這是來自Apple的文檔重:iPhone SDK:你如何測量使用Quartz的字符串的寬度和高度?
如果文本的測量對您的應用程序非常重要,可以 使用石英計算它們:如何使用Quartz來確定一個字符串的寬度2D功能。不過,您可能首先考慮使用ATSUI,其優點是文本佈局和 度量。 ATSUI有幾個功能可以獲取文本指標。不是 只能獲得佈局後文本指標,但在極少數情況下,您需要它們,您可以獲取佈局前文本指標。與 石英不同,您必須自己進行計算,ATSUI 將爲您計算測量結果。例如,您可以通過調用ATSUI函數 ATSUMeasureTextImage來獲取 文本的圖像邊界矩形。
如果您認爲石英文本適合您的需求比ATSUI(或 可可)更好,你可以按照以下步驟來測量文本的寬度 石英繪製之前:
- 調用函數CGContextGetTextPosition到獲取當前文本位置。
- 使用函數CGContextSetTextDrawingMode將文本繪製模式設置爲kCGTextInvisible。
- 通過調用函數CGContextShowText在當前文本位置繪製文本來繪製文本。
- 通過調用函數CGContextGetTextPosition來確定最終的文本位置。
- 從結束位置減去起始位置以確定文本的寬度。
這裏是我的問題:
這是真的,以確定使用核心圖形字符串的寬度最好的方法是什麼?它看起來很脆弱,因爲我的文本與2D圖形元素共存,所以我想爲所有渲染使用相同的上下文。我希望會有一些簡潔的方法,如:
CGContextGetTextWidthAndHeight(context,text);
我看到ATSUI已經過時,將被核心文本取代。這是真的,如果是這樣,它在iPhone SDK中嗎?
核心文本現在在iOS 4中發佈。但是,pgb回答的方法最簡單。 – Eonil 2010-07-09 07:36:09