我需要在视图中使用Core Text渲染富文本(简单格式化,一行文本中的多种字体等).我想知道用户使用(标准复制/粘贴功能)是否可以选择以这种方式呈现的文本?
jav*_*smo 24
我在CoreText中实现了一个文本选择.这真的是一项艰苦的工作......但这是可行的.
基本上你必须CTLine使用CTFrameGetLineOrigins(1),CTLineGetTypographicBounds(2),CTLineGetStringRange(3)和CTLineGetOffsetForStringIndex(4)保存所有的rects和origin .
可以使用原点(1),上升(2),下降(2)和偏移(3)(4)来计算线矩形,如下所示.
lineRect = CGRectMake(origin.x + offset,
origin.y - descent,
offset,
ascent + descent);
Run Code Online (Sandbox Code Playgroud)
在这样做之后,您可以测试哪条线具有循环线的触摸点(始终记住CoreText使用反Y坐标).
知道具有触摸点的线,您可以知道位于该点(或最近的字母)的字母CTLineGetStringIndexForPosition.
这是一个截图.

对于那个放大镜,我使用了这篇文章中显示的代码.
编辑:
要绘制蓝色背景选择,您必须使用绘制矩形CGContextFillRect.不幸的是,没有背景颜色NSAttributedString.
| 归档时间: |
|
| 查看次数: |
3628 次 |
| 最近记录: |