文本控件综述

SDK提供的文本控件

  • UILabel(继承UIView):无法输入;
  • UITextField(继承UIView):只能输入一行,不可以滚动,可以设置提醒文字;
  • UITextView(继承UIScrollView):能输入多行,可以滚动,不可以设置提醒文字。

三个控件都支持attributedText,进而都可以直接原生显示html,具体代码如下:

NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[content dataUsingEncoding:NSUnicodeStringEncoding]
                                                                        options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
                                                             documentAttributes:nil
                                                                          error:nil];

特性:text和html风格统一

很多情况下,一个控件可能既要可以显示text,也要可以显示html,而它们的默认风格属性都一样。为了问题的简单化,这里只讨论UILabel。大家都知道UILabel的font和textColor属性只对text起作用,对attributedText不起作用,如果让后台或者前端区分text或者html,也是很蛋疼的一件事。

利用html的标签,在content外面封装一层默认属性。

浏览一下html常用标签,可发现span标签可以胜任该工作,具体代码如下:

+ (NSAttributedString *)attributedStringContent:(NSString *)content
{
    content = [NSString stringWithFormat:@"<span style=\"color:#8d8b8b; font-size:15px\">%@</span>", content];
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[content dataUsingEncoding:NSUnicodeStringEncoding]
                                                                            options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
                                                                 documentAttributes:nil
                                                                              error:nil];
    return attributedString;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,271评论 4 61
  • 睡不着QAQ 码一个掐头去尾、互不相干的脑洞集。 【1】食 信有因果之说,遂作放生之论。但是美味所在,放者自放,吃...
    猿白阅读 427评论 2 2
  • 随着临在的深入,一步一步的感受内在的伤痛和模式,接纳也好不接纳也好它都是我的一部分,我都和它们在一起,昨天参加了杭...
    88艳阅读 234评论 0 0
  • 我们终此一生 就是要摆脱他人的期待 找到真正的自己
    堃子阅读 114评论 0 0