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風格統(tǒng)一
很多情況下,一個控件可能既要可以顯示text,也要可以顯示html,而它們的默認風格屬性都一樣。為了問題的簡單化,這里只討論UILabel。大家都知道UILabel的font和textColor屬性只對text起作用,對attributedText不起作用,如果讓后臺或者前端區(qū)分text或者html,也是很蛋疼的一件事。
利用html的標簽,在content外面封裝一層默認屬性。
瀏覽一下html常用標簽,可發(fā)現(xiàn)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;
}