Iphone 使用核心文本设置给定字符串范围的背景色/突出显示色

Iphone 使用核心文本设置给定字符串范围的背景色/突出显示色,iphone,ios,highlight,nsattributedstring,core-text,Iphone,Ios,Highlight,Nsattributedstring,Core Text,在我的iPhone应用程序中,我有一些使用核心文本的文本。我正在使用nsattributestring为给定范围的文本设置某些样式 我似乎找不到设置背景/高光颜色的属性,尽管这似乎是可能的。我找不到听起来相关的属性名称常量,文档仅列出: kCTCharacterShapeAttributeName kCTFontAttributeName kCTKernAttributeName kCTLigatureAttributeName kCTForegroundColorAttributeName k

在我的iPhone应用程序中,我有一些使用核心文本的文本。我正在使用
nsattributestring
为给定范围的文本设置某些样式

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

kCTCharacterShapeAttributeName
kCTFontAttributeName
kCTKernAttributeName
kCTLigatureAttributeName
kCTForegroundColorAttributeName
kCTForegroundColorFromContextAttributeName
kCTParagraphStyleAttributeName
kCTStrokeWidthAttributeName
kCTStrokeColorAttributeName
kCTSuperscriptAttributeName
kCTUnderlineColorAttributeName
kCTUnderlineStyleAttributeName
kCTVerticalFormsAttributeName
kCTGlyphInfoAttributeName
kCTRunDelegateAttributeName
Twitterrific开发者克雷格·霍肯贝里(Craig Hockenberry)在推特上公开表示,他使用核心文本来呈现推特,而Twitterrific有我在触摸链接时所说的背景/亮点

任何正确方向的帮助或指点都会非常好,谢谢


编辑:这是Craig发布的一篇文章,提到了“核心文本、属性字符串和大量的艰苦工作”,其中提到了使用CTFrameSetter度量来计算触摸是否与链接相交。

最后,我不得不使用核心文本度量方法(获取行的范围、边界、原点等)计算链接的边框。一旦链接跨越的每一行都有一个rect,我就在重新绘制上面的文本之前将背景绘制到上下文中


看起来需要做大量的工作,但它确实有效。

对于iOS 6,我认为您可以通过:NSBackgroundColorAttributeName获得想要的效果。例如:

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

这不是一个答案,但你可以使用XCode的组织者窗口中的屏幕截图选项,还是取消触摸?嗨,Jasarien,你能演示如何使用这些指标吗?我对核心文本非常陌生。这将非常有帮助。我也在自己尝试。试试这个快速演示,它非常有用。我认为如果您提供您找到的解决方案会更好。我最终得到的解决方案是在这里使用CTFrameDraw和CTFrameSetterCreateframe时,这不会绘制任何背景色。我不认为此属性与CTAttributedString具有相同的属性