当后台返回的json数据里有h5字符串该如何显示

Posted xqskzs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当后台返回的json数据里有h5字符串该如何显示相关的知识,希望对你有一定的参考价值。

有时候一些数据是需要动态显示,并且需要换行,但客户端并不知道这些数据该在哪里换行,

并按照后台编辑格式来显示,于是后台直接返回的后台编辑的h5字符串,但数据已经经过json

解析过了,再去通过专门解析h5的第三方去解析瞬间感觉头大,于是我去百度了一下如何显示

后台返回的h5字符串,有两个方法,一种是label的attributedText,还一种是webView。

label的写法:

  NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:

  [htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:

  @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];  

  UILabel * myLabel = [[UILabel alloc] initWithFrame:self.view.bounds];  

  myLabel.attributedText = attrStr; 

现在问题来,内容可以显示,但达不到我要的效果,首先不知道label要设置多高,也有代码:

计算attrStr的大小:
  CGSize size = [attrStr boundingRectWithSize:CGSizeMake(label.frame.size.width, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin |         NSStringDrawingUsesFontLeading context:nil].size; 

如果计算不准就用 [myLabel sizeToFit] ;

如果内容超出界面咋办,放到scrollview里,好麻烦。于是我选择了webView,因为里面本身就可以滑,也不用自己计算高度。

问题又来了,是用WKWebView还是UIWebView,一开始我使用了WKWebView,我以为越新的api功能更全更好用,但我错了,显示出来

大小完全不同,和蚂蚁差不多,很失望,后面经过询问使用UIWebView才是正解,瞬间打脸。

#import <WebKit/WebKit.h>

@property(nonatomic,strong)UIWebView * htmlWebV;

- (UIWebView *)htmlWebV

{

    if(_htmlWebV == nil)

    {

        _htmlWebV = [[UIWebView alloc] initWithFrame:CGRectMake(0, 100, 300, 200)];

        _htmlWebV.scrollView.bounces = NO

        _htmlWebV.scrollView.showsHorizontalScrollIndicator = NO;

        _htmlWebV.scrollView.backgroundColor = [UIColor whiteColor];

    }

    return _htmlWebV;

}

- (void)updateHtmlStr:(NSString *)htmlStr

{

    if(htmlStr.length > 0)

    {

        [_htmlWebV loadHTMLString:htmlStr baseURL:nil];

    }

}

[self.view addSubview:self.htmlWebV];

拿到数据之后,调用[self updateHtmlStr:htmlStr];


以上是关于当后台返回的json数据里有h5字符串该如何显示的主要内容,如果未能解决你的问题,请参考以下文章

AJAX如何解析后台传来的json数据?

前端怎么判断后台返回的0或1来渲染不同的页面

后台获取的数据怎样在前端页面上显示

后台返回的中文数据是乱码,如何解析成正常字符

关于eval()函数处理后台返回的json数据

ajax后台返回的数据如何在HTML上成列表显示,下面的翻页功能怎么来做