8

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

我似乎找不到用于设置背景/突出显示颜色的属性,尽管它似乎是可能的。我找不到听起来相关的属性名称常量,文档仅列出:

kCTCharacterShapeAttributeName
kCTFontAttributeName
kCTKernAttributeName
kCTLigatureAttributeName
kCTForegroundColorAttributeName
kCTForegroundColorFromContextAttributeName
kCTParagraphStyleAttributeName
kCTStrokeWidthAttributeName
kCTStrokeColorAttributeName
kCTSuperscriptAttributeName
kCTUnderlineColorAttributeName
kCTUnderlineStyleAttributeName
kCTVerticalFormsAttributeName
kCTGlyphInfoAttributeName
kCTRunDelegateAttributeName

Twitterrific 的开发者 Craig Hockenberry 在 Twitter 上公开表示,他使用 Core Text 来呈现推文,而 Twitterrific 有这个背景/突出显示,当你触摸一个链接时,我正在谈论它。

替代文字

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

编辑:这是Craig 发布的推文的链接,其中提到“核心文本、属性字符串和大量的辛勤工作”,以及使用 CTFrameSetter 指标来确定触摸是否与链接相交的后续内容。

4

2 回答 2

3

最后,我不得不使用 Core Text 度量方法(获取范围、边界、线的原点等)来计算链接的边界矩形。一旦我为链接跨越的每一行设置了一个矩形,我就将背景绘制到上下文中,然后再重新绘制它上面的文本。

看起来工作量很大,但它确实有效。

于 2010-12-28T12:49:11.560 回答
1

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

[attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:selectedRange];
于 2012-12-05T22:25:24.617 回答