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

时间: 2024-07-29 10:52:47

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

前台如何处理后台返回的json数据

后台返回的json数据格式: { "state": true, "data": { "id": 0, "name": "testAjax"'"sex": null, "csny": null, "mz": null, "byxx": null, "sfzh": null, "yhtc":

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

对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次.这种方式也适合以普通javascipt方式获取json对象,以下举例说明: var dataObj=eval("("+data+")");//转换为json对象 为什么要 eval这里要添加 ("("+data+")")呢? 原因在于:eval本身的问题

JS获取后台返回的JSON数据

问题:通过$.get从后台获取了一段json串{"id":"1","name":"ww"},然后要拿到这里面的id和name值 $.get(url,     function(data) {    alert("ID:" + data.id + "\nName:" + data.name);     }); 直接这样写的话,界面会alert提示undefined,所以应该是没能正确解析返

Jquery 使用Ajax获取后台返回的Json数据后,页面处理

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <sc

ajax 请求 对json传的处理 Jquery 使用Ajax获取后台返回的Json数据后,页面处理

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <sc

Jquery JavaScript解析Ajax返回的json数据(转)

最近在用jquery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行. 经过网友指出,这个问题已经有了比较明确的结论,那就是jquery ajax方法的complete方法是不会处理dataType的,所以如果你是在complete里面试图直接用json数据是不可行的,必须先通过eval. $.ajax方法如下: Java代码 $.ajax({ type: “POST”, url: ctxRoot+’FolderAct

jquery序列化form表单使用ajax提交后处理返回的json数据

这篇文章主要介绍了jquery序列化form表单,使用ajax提交后处理返回的json数据的示例,需要的朋友可以参考下 1.返回json字符串: ** 将一个字符串输出到浏览器 */    protected void writeJson(String json) {        PrintWriter pw = null;        try {            servletResponse.setContentType("text/plain;charset=UTF-8"

ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据

ajaxFileUpload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况. 仔细调试发现其实在向服务器提交数据后,是进入了success回调函数的,只是没有解析到json数据.那就说明服务器做出了响应的,进入了success方法的,唯一的问题就是前台接受的数据不是json格式的. 使用console.log输出data发现并不是纯粹的json数据,其中头部多了<pre style="word-wrap

js循环处理后台返回的json数组

1 <script type="text/javascript"> 2 function gongdan_search(elm){ 3 var dangqian_value=$(elm).val(); 4 if(dangqian_value){ 5 $.ajax({ 6 url:'__URL__/order_infos_list_search', 7 type:'post', 8 data:{dangqian_value:dangqian_value}, 9 success