2012-03-13 17 views
0

我是新來的核心文本。有沒有辦法找出NSAttributedString中的字符的某個NSRange是否在多行(CTLine)上?多個CTLine的NSRange

我在做的是設置NSAttributedString,然後用該字符串創建framesetter。字符串可以是不同的長度,我想知道如何找到一個範圍(即一個短語)是否在多行上。因爲它是一個不同長度的字符串,所以我寧願不設置每條線。

謝謝!

回答

1

所以,你需要使用以下功能,以獲得行的:

一旦你從framesetter得到CTFrameRef,你需要調用:

CFArrayRef lines = CTFrameGetLines (frame); 

然後看看有多少行還有,統計數組中的臺詞:

CFIndex numLines = CFArrayGetCount(lines); 

如果您需要了解字符的確切範圍(從原來的字符串)的線(行0在這種情況下),使用:

CFRange range = CTLineGetStringRange(CFArrayGetValueAtIndex(lines, 0));