zoukankan      html  css  js  c++  java
  • 结合OHAttributedLabel说Core Text

    富文本,就是一段有不同的样式的文字。看一下iOS平台下实现富文本的一些常用的类。


    NSAttributedString CFAttributedString 一段有自己样式(统一不可变)的文字
    NSMutableAttributedString CFMutableAttributedString 一段有多种样式的文字

    CTFrame
    1.CGPath -> CGPathGetBoundingBox 得到占用的区域大小
    2.CTFrameGetLineOrigins 可以得到每行的起始位置
    3.还可以控制文字横排竖排等

    CTFramesetter
    1.CTFramesetterSuggestFrameSizeWithConstraints 确定文字所需区域大小或指定区域可以显示多少文字

    CTLine
    1.CTLineGetStringIndexForPosition 确定区域内点处文字范围

    NSTextCheckingResult 代表各种链接,时间地址电话网址自定义等。

    NSDataDector
    这是一个专门配合NSTextCheckingResult检测是否是特定链接的类。继承于NSRegularExpression类。
    enumerate 遍历
    match 匹配的数组
    numbersOfMatch 匹配的个数


    1.使用core text就是先有一个要显示的string,然后定义这个string每个部分的样式->attributedString -> 生成 CTFramesetter -> 得到CTFrame -> 绘制
    其中可以更详细的设置换行方式,对齐方式,绘制区域的大小等。
    2.绘制只是显示,点击事件呢?就需要一个判断了。
    CTFrame 包含了多个CTLine,并且可以得到各个line的其实位置与大小。判断点击处在不在某个line上。CTLine 又可以判断这个点(相对于ctline的坐标)处的文字范围。然后遍历这个string的所有NSTextCheckingResult,根据result的rang判断点击处在不在这个rang上,从而得到点击的链接与位置。处理。

  • 相关阅读:
    Android项目打包
    Video Demystified
    C指针与python bytes 互转
    运筹学笔记 3 线性代数基础
    三角网格上的寻路算法Part.2—A*算法
    三角网格上的寻路算法Part.1—Dijkstra算法
    从二维点集重建平面形状-浅议凹包算法
    二值图像膨胀腐蚀算法的几种实现方式
    浅议像素化与体素化Part.1——平面图形像素化
    寻找图像中的局部极大点
  • 原文地址:https://www.cnblogs.com/v2m_/p/2335818.html
Copyright © 2011-2022 走看看