<原>DTCoreText学习(四)-在html中嵌入自定义view

我们已经使用过DTCoreText  其解析并显示html的功能十分强大,

今天在此介绍其更加强大的功能

首先看下图

这是一个DTAttributedTextContentView     设置其属性 attributedString  来达到显示html的目的

我们看到 文字之间有一个textfield  能响应  能编辑  ,    这就是我门在html中嵌入的自定义view

首先看一下这段html的 源代码

NSString *html=@"爱词霸英语为广大英语学习爱好者提供在线词典、在线翻译、英语句库、情景会话、英语学习资料、汉语词典、在线测试、金山词<object style=\"display:inline;\" someColorParameter=\"red\" width=100 height=20></object>情景会话、英语学习资料、汉语词典、在线测试、金山词";

 <object style=\"display:inline;\" someColorParameter=\"red\" width=100 height=20></object>

这一句是核心代码,在解析到这一句的时候 DTCoreText会知道 我们想在这里嵌入一个自定义的view  宽度为100 高度为20

颜色为红色     然后去调用他的委托方法  以得到我们自定义的视图的实例

之后我们必须实现DTAttributedTextContentView  的委托方法

- (UIView *)attributedTextContentView:(DTAttributedTextContentView *)attributedTextContentView viewForAttachment:(DTTextAttachment *)attachment frame:(CGRect)frame
{  
    UITextField *text=[[UITextField alloc]initWithFrame:CGRectMake(0, 0,frame.size.width, frame.size.height)];
    text.borderStyle=UITextBorderStyleRoundedRect;
    text.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;
    return text;
    
}

 这样DTcoreText就会在  那里插入我们自定义的view   而委托中的参数frame  是我们在html中设置的宽度高度,我门仍然可以在委托方法中修改frame      所有的显示效果 以我们在未果方法中的修改 定义为最终效果

在委托方法中 我们甚至可以在view上  addSubView  等等    灵活度很大

如果需要嵌入多处view的话  需要在委托中进行一些必要的判断

 

 
原文地址:https://www.cnblogs.com/bucengyongyou/p/2677245.html