您好,登錄后才能下訂單哦!
小編給大家分享一下UITextView和UILabel加載HTML的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
這demo中是放在cell里面加載的,并且教大家如何自動計算行高。不過UITextView計算行高是有誤差的,因為筆者沒有使用更高級的處理,直接使用了sizeThatFits這個API來計算高度。而UITextView天生就不一樣,它有上、下、左、右的間隔的,因此計算出來是有一點小偏差的。
本篇文章只講如何加載,不講如何精確計算!
通過它就可以設(shè)置加載HTML。但是,要讓UILabel可以加載HTML,要求在iOS7之后才可以使用:
- (nullableinstancetype)initWithData:(NSData *)dataoptions:(NSDictionary*)optionsdocumentAttributes:(NSDictionary* __nullable* __nullable)dicterror:(NSError **)errorNS_AVAILABLE(10_0, 7_0);
其中,options中的指定key為:
UIKIT_EXTERN NSString * const NSDocumentTypeDocumentAttribute NS_AVAILABLE(10_0, 7_0);
時,它可以選擇的值有:
UIKIT_EXTERN NSString * const NSPlainTextDocumentType NS_AVAILABLE(10_0, 7_0);UIKIT_EXTERN NSString * const NSRTFTextDocumentType NS_AVAILABLE(10_0, 7_0);UIKIT_EXTERN NSString * const NSRTFDTextDocumentType NS_AVAILABLE(10_0, 7_0);UIKIT_EXTERN NSString * const NSHTMLTextDocumentType NS_AVAILABLE(10_0, 7_0);
其中,NSHTMLTextDocumentType就是設(shè)置要加載HTML了。
UILabel在iOS6.0后提供了一個屬性用于設(shè)置各種呈現(xiàn)的樣式:
@property(null_resettable,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0);
雖然attributedText屬性是iOS6就可以使用,但是對于加載HTML,要求是在iOS7以上才能使用:
// ios 7.0以后才能使用NSData *data = [model.htmldataUsingEncoding:NSUnicodeStringEncoding];NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};NSAttributedString *html = [[NSAttributedString alloc]initWithData:data options:options documentAttributes:nil error:nil];self.htmlLabel.attributedText = html;
UITextView也提供了相關(guān)設(shè)置文本樣式的屬性:
@property(null_resettable,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0);
與UILabel類似,雖然attributedText屬性是iOS6就可以使用,但是對于加載HTML,要求是在iOS7以上才能使用:
// ios 7.0以后才能使用NSData *data = [model.htmldataUsingEncoding:NSUnicodeStringEncoding];NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};NSAttributedString *html = [[NSAttributedString alloc]initWithData:data options:options documentAttributes:nil error:nil];self.textView.attributedText = html; // 加載HTML后,還要設(shè)置行高約束,否則高度就是0CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;[self.textViewmas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo([self.textViewsizeThatFits:CGSizeMake(screenWidth - 20, CGFLOAT_MAX)].height);}];
在加載好HTML后,也要設(shè)置其高度,但是要注意,sizeThatFits:這個API計算UITextView的高度是不精準(zhǔn)的,有一定的誤差。
順便說一下,屬性中指定的類型null_resettable是什么鬼?這是新特性啦,從英文角度看就大概可以看出來意思是 可空、可重新設(shè)置值 。
以上是“UITextView和UILabel加載HTML的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。