iOS上的NSAttributedString中的NSBackgroundColorAttributeName-like属性?

kev*_*boh 12 objective-c nsattributedstring core-text ios

我打算使用NSAttributedString来突出显示用户搜索的匹配查询的字符串部分.但是,我找不到iOS的等价物NSBackgroundColorAttributeName- 没有kCTBackgroundColorAttributeName.难道这样的事情存在,类似的方式NSForegroundColorAttributeNamekCTForegroundColorAttributeName

omz*_*omz 8

不,Core Text中不存在这样的属性,您必须在文本下面绘制自己的矩形来模拟它.

基本上,您必须确定要为字符串中的给定范围填充哪个矩形.如果你使用CTFramesetter生成a的布局CTFrame,你需要使用CTFrameGetLines和得到它的线和它们的起源CTFrameGetLineOrigins.

然后迭代这些线并用于CTLineGetStringRange找出哪些线是您要突出显示的范围的一部分.要使矩形填充,请使用CTLineGetTypographicBounds(对于高度)和CTLineGetOffsetForStringIndex(对于水平偏移和宽度).

  • 很好的答案.遗憾的是,一个简单的属性无法替换所有代码. (2认同)