使用Core Text设置给定字符串范围的背景颜色/突出显示颜色

时间:2010-12-21 11:48:37

标签: iphone ios highlight nsattributedstring core-text

我在iPhone应用中使用Core Text布局了一些文字。我正在使用NSAttributedString在给定范围的文本中设置某些样式。

我似乎无法找到设置背景/高亮颜色的属性,尽管看起来有可能。我找不到一个听起来相关的属性名称常量,文档只列出:

kCTCharacterShapeAttributeName
kCTFontAttributeName
kCTKernAttributeName
kCTLigatureAttributeName
kCTForegroundColorAttributeName
kCTForegroundColorFromContextAttributeName
kCTParagraphStyleAttributeName
kCTStrokeWidthAttributeName
kCTStrokeColorAttributeName
kCTSuperscriptAttributeName
kCTUnderlineColorAttributeName
kCTUnderlineStyleAttributeName
kCTVerticalFormsAttributeName
kCTGlyphInfoAttributeName
kCTRunDelegateAttributeName
Twitter上的Twitter开发人员Craig Hockenberry已经在Twitter上公开表示他使用Core Text来呈现推文,Twitterrific有这个背景/亮点,当你触摸链接时我正在讨论。

alt text

任何正确方向的帮助或指示都会非常棒,谢谢。

修改:这是一个link to the tweet Craig发布了提及“核心文本,归因于字符串和大量努力工作”,以及提到使用CTFrameSetter指标工作的follow up如果触摸与链接相交。

2 个答案:

答案 0 :(得分:3)

最后,我不得不使用Core Text度量方法(获取行的范围,边界,行的起源等)来计算链接的边界矩形。一旦我对链接的每一行都有一个矩形,我在重新绘制其上方的文本之前将背景绘制到上下文中。

看起来像很多工作,但它确实有效。

答案 1 :(得分:1)

使用iOS 6,我认为您可以通过以下方式获得所需的效果:NSBackgroundColorAttributeName。如:

[attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:selectedRange];