2012-02-10 15 views
0

如果我有,我已經用字符串初始化像這樣任何方式(很容易)確定格式化Framesetter所需的最小寬度?

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString); 

我想找到的最小寬度,以顯示在框架中最大的字符串framesetter。是否有捷徑可尋?我可以通過迭代線和運行並從那裏計算它,但它看起來像是會有方法的東西,因爲它會在內部計算它。

我試圖

CGSize sz = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(1, CGFLOAT_MAX), NULL); 

,但它只是返回一定的大小,這似乎是一個字形的寬度。

TIA

回答

1

如果你正在尋找的寬度,你應該通過CGFLOAT_MAX在你CGSizeMake寬度表明寬度是不受約束的。

一般來說,要查找給定寬度的高度,請傳遞CGSizeMake(myWidth,CGFLOAT_MAX)並查找單行文本的寬度,並傳遞CGSizeMake(CGFLOAT_MAX,CGFLOAT_MAX)。

+0

感謝您的支持 - 我所追求的是一種查找單詞寬度的方法,例如在'這是一個測試'我想要'測試'這個詞的寬度。我可以通過拉開字符串和解析自己來完成。我認爲可能有一種方法可以在覈心文本中實現,因爲前期製作者必須在內部完成這項工作,但似乎沒有辦法獲取這些信息。 – daven11 2012-03-11 23:04:35

+1

如果你把你的框架分成幾行,並且你的代碼輪流運行,你應該在那裏找到API,它可以讓你獲得單個角色的位置以及一系列角色的緊密邊界框。 – MrO 2012-03-13 17:17:11

相關問題