我们已经使用过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的话 需要在委托中进行一些必要的判断