美文网首页
TYAttributedLabel源码结构分析

TYAttributedLabel源码结构分析

作者: LiuffSunny | 来源:发表于2019-08-22 15:54 被阅读0次

    主要控件TYAttributedLabel继承自UIView,

    1.遵守代理TYAttributedLabelDelegate
    TYAttributedLabelDelegate主要负责Link的点击代理、长按代理 有多个状态 begin, changes, end 都会调用,所以需要判断状态、长按非Container区域代理 有多个状态 begin, changes, end 都会调用,所以需要判断状态
    2.主要属性
    文字颜色、文字大小、行数、链接颜色、段落间距、字间距、对齐方式。。。。
    TYTextContainer *textContainer 处理文本的(容器)管家
    一系列方法 拼接Link、图片、对象等等
    生成文本容器textContainer
    -createTextContainerWithTextWidth

    ImageTextViewController中 流程
    1.添加屏幕滚动
    2.添加addTextAttributedLabel1
    2.1 TYAttributedLabel *label 创建并设置代理 ,添加到ScrollView
    2.2 分割文本到textArray数组 colorArray随机颜色设置
    2.3 追加图片URl(TYImageStorage对象)创建TYImageStorage对象 设置imageURL size
    ****Label appendTextStorage:TYImageStorage对象
    TYAttributedLabel中
    [_textContainer appendTextStorage:textStorage];
    [self invalidateIntrinsicContentSize];
    [self setNeedsDisplay];
    此时的TYImageStorage对象继承自TYDrawStorage,遵守TYDrawStorageProtocol
    2.3.1设置 fontAscent descent以便于对于计算高度
    2.3.2 NSAttributedString *attAppendString = [textStorage appendTextStorageAttributedString];
    替换成空白占位符,为这个占位符
    添加文本属性和runDelegate 为图片设置CTRunDelegate,delegate决定留给显示内容的空间大小(此时attAppendString已经有了占位文本和CTRunDelegate)
    2.3.3 [self appendTextAttributedString:attAppendString]; 上一步完成的(带有字体 和颜色 还有Range的)attAppendString 添加文本段落样式属性 和 字间距以及真正拼接
    剩下的交给drawRect去执行

    3.添加addTextAttributedLabel2
    4.图片点击 和 图片长按代理方法

    相关文章

      网友评论

          本文标题:TYAttributedLabel源码结构分析

          本文链接:https://www.haomeiwen.com/subject/usfqsctx.html