iOS UILabel 顯示 html
阿新 • • 發佈:2019-02-16
效果圖:
實現:
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSString * htmlString = @"<html><body>PM<sub>2.5<sub> <font size=\"13\" color=\"red\">hello world!</font> </body></html>"; UILabel * label = [[UILabel alloc] initWithFrame:self.view.bounds]; label.attributedText = [self strToAttriWithStr:htmlString]; [self.view addSubview:label]; CGRect rect = label.frame; rect.size.height = [self getAttriHeightWithLabel:label width:self.view.bounds.size.width]; label.frame = rect; } /** * 富文字轉html字串 */ - (NSString *)attriToStrWithAttri:(NSAttributedString *)attri{ NSDictionary *tempDic = @{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute:[NSNumber numberWithInt:NSUTF8StringEncoding]}; NSData *htmlData = [attri dataFromRange:NSMakeRange(0, attri.length) documentAttributes:tempDic error:nil]; return [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; } /** * 字串轉富文字 */ - (NSAttributedString *)strToAttriWithStr:(NSString *)htmlStr{ return [[NSAttributedString alloc] initWithData:[htmlStr dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil]; } /** *獲得富文字的高度 **/ -(CGFloat)getAttriHeightWithLabel:(UILabel *)label width:(CGFloat)width { CGFloat height = [label.attributedText boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height;//針對富文字 return height; } @end