当后台返回的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];

转载于:https://www.cnblogs.com/xqskzs/p/8136348.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值