0
如何從CTlineRef中提取文本字符串?我知道,例如,我可以做CTLineGetStringRange(aLine),我有用於生成線的AttributedString(即:CFAttributedStringRef)。如何從AttributedString中提取文本字符串?如何從CTlineRef中提取文本字符串?
如何從CTlineRef中提取文本字符串?我知道,例如,我可以做CTLineGetStringRange(aLine),我有用於生成線的AttributedString(即:CFAttributedStringRef)。如何從AttributedString中提取文本字符串?如何從CTlineRef中提取文本字符串?
所以,你有這樣的:
CFAttributedStringRef cfAttributedString = ...;
CTLineRef line = ...;
CFRange cfRange = CTLineGetStringRange(line);
轉換的CFRange
到NSRange
和鑄CFAttributedStringRef
到NSAttributedString *
:
NSRange nsRange = NSMakeRange(cfRange.location, cfRange.length);
NSAttributedString *richText = (__bridge NSAttributedString *)cfAttributedString;
然後你可以使用Objective-C的消息來獲得子。如果你想要一個屬性字符串:
NSAttributedString *richSubtext = [richText attributedSubstringFromRange:nsRange];
如果你想要一個簡單的字符串:
NSString *substring = [richText.string substringWithRange:nsRange];
如果你想堅持核心基礎功能出於某種原因(我不會推薦它),你可以得到歸因子:
CFAttributedStringRef cfAttributedSubstring = CFAttributedStringCreateWithSubstring(
NULL, cfAttributedString, cfRange);
或者純子是這樣的:
CFStringRef cfString = CFAttributedStringGetString(cfAttributedString);
CFStringRef cfSubstring = CFStringCreateWithSubstring(NULL, cfString, cfRange);
我猜你是CTLineGetGlyphRuns,然後是CTRunGetGlyphs ......每次運行。 –
感謝約翰,但CTRunGetGlyphs將返回我CGGlyph ...我想檢索一個CFStringRef :( – loki