iOS 中通常加载 HTML 字符串

2023-05-16

  有时候后台会返回多行文字,其中文字中某写大小,颜色需要特殊订制就会比较麻烦,会用HTML 字符串返回给前台。

假如后台返回的是responseData[@"activityMsg"]   这个,长这样

activityMsg = "<head>

 

    <meta charset="UTF-8">

 

</head>

 

<div style="padding: 0px 0px;">

 

  <p align="left" style="color: #990035;font-size: 13px; padding:0;margin:0">1.本次交易仅支持 信用卡,光大银行手机信用卡</p>

 

  <p align="left" style="color: #990035;font-size: 13px; padding:0;margin:0">2.光大联名信用卡最高满5000元减300元</p>

 

  <p align="left" style="color: #990035;font-size: 13px; padding:0;margin:0">3.使用银行卡满减权益的订单不支持退款</p>

 

</div>"

1,通过 UILabel 加载富文本的方法加载 HTML 字符串

  NSString* str1 = [self htmlEntityDecode:responseData[@"content"]];

            //2.将HTML字符串转换为attributeString

            NSAttributedString * attributeStr = [self attributedStringWithHTMLString:str1];

            

            //3.使用label加载html字符串

            _contentLab.attributedText = attributeStr;

            _contentLab.text  //这个取到的值可以当成字符串往后面的页面去传

            CGSize titleSize = [_contentLab.attributedText boundingRectWithSize:CGSizeMake(kScreenWidth-60, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;

            

            _contentLab.frame=CGRectMake(30, 115, kScreenWidth-60, ceilf(titleSize.height));

//将 &lt 等类似的字符转化为HTML中的“<”等

- (NSString *)htmlEntityDecode:(NSString *)string

{

    string = [string stringByReplacingOccurrencesOfString:@"&quot;" withString:@"\""];

    string = [string stringByReplacingOccurrencesOfString:@"&apos;" withString:@"'"];

    string = [string stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"];

    string = [string stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"];

    string = [string stringByReplacingOccurrencesOfString:@"&amp;" withString:@"&"]; // Do this last so that, e.g. @"&amp;lt;" goes to @"&lt;" not @"<"

    

    return string;

}

 

//将HTML字符串转化为NSAttributedString富文本字符串

- (NSAttributedString *)attributedStringWithHTMLString:(NSString *)htmlString

{

    NSDictionary *options = @{ NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType,

                               NSCharacterEncodingDocumentAttribute :@(NSUTF8StringEncoding) };

    

    NSData *data = [htmlString dataUsingEncoding:NSUTF8StringEncoding];

    

    return [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];

}

 

//去掉 HTML 字符串中的标签

- (NSString *)filterHTML:(NSString *)html

{

    NSScanner * scanner = [NSScanner scannerWithString:html];

    NSString * text = nil;

    while([scanner isAtEnd]==NO)

    {

        //找到标签的起始位置

        [scanner scanUpToString:@"<" intoString:nil];

        //找到标签的结束位置

        [scanner scanUpToString:@">" intoString:&text];

        //替换字符

        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",text] withString:@""];

    }

    //    NSString * regEx = @"<([^>]*)>";

    //    html = [html stringByReplacingOccurrencesOfString:regEx withString:@""];

    return html;

}

  • 通过 WebView 加载 HTML 字符串
UIWebView * webView = [[UIWebView alloc]initWithFrame:CGRectMake(20, 300, self.view.frame.size.width - 40, 400)];
    [webView loadHTMLString:str1 baseURL:nil];
    [self.view addSubview:webView];
    self.webView = webView;

换成wkwebview也行 也是具有这个方法

loadHTMLString:str1 baseURL:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 中通常加载 HTML 字符串 的相关文章

随机推荐

  • 正确使用和保存deconfig的流程:

    正确使用和保存deconfig的流程 xff1a 1 要修改在arch arm configs下的文件xxx defconfig 2 make ARCH 61 arm64 xxx defconfig 会生成 config文件 3 make
  • Ubuntu安装Brave浏览器

    sudo curl x 34 http 127 0 0 1 8889 34 fsSLo usr share keyrings brave browser archive keyring gpg https brave browser apt
  • Android O HIDL框架

    HIDL简介 Android O开始 xff0c Google为了将framework和HAL层分割开来 xff0c 使得framework可以独立于HAL层更新 xff0c 设计了HIDL 有了HIDL xff0c HAL模块可以以一个独
  • Xfce 安装主题

    一 主题种类 xff08 一 xff09 gtk主题 窗口内的按钮和文本 xff0c 要在 外观 中的 样式 标签页设置 1 主题文件位置 xff1a 用户目录下 local share themes或者 themes xff0c 系统目录
  • Linux更改键位映射

    linux使用xmodmap管理键位映射 一 xmodmap xff08 一 xff09 语法格式 xmodmap 选项 filename xff08 二 xff09 选项 display host dpy X server to use
  • MySQL 建表 技巧

    1 create time 自动填写创建日期 xff0c update time 数据更新之后自动更新时间 使用DDL语句创建 CREATE TABLE 96 production info 96 96 id 96 int NOT NULL
  • Android 连接MySQL 并打包

    1 代码配置 2 打包选项配置 xff0c 一定是mono 43 net 4 x
  • HybridCLR 实战篇

    HybridCLR 实战篇 HybridCLR 是MIT开源的一个unity热更新打包方案 xff0c 该插件不像LUA和ILRuntime那样复杂 官方文档 xff1a https focus creative games github
  • Intellij IDEA中的撤销和回复撤销快捷键

    Intellij IDEA中 1 Ctrl 43 z是撤销快捷键 2 如果想恢复Ctrl 43 z 掉的内容 xff0c 按快捷键为 xff1a Ctrl 43 Shift 43 Z
  • linux zip文件解压命令详解

    文章转自 xff1a http www cnblogs com wangkongming p 4305962 html 1 把 home目录下面的mydata目录压缩为mydata zip zip r mydata zip mydata 压
  • mouse without borders win7安装不了

    mouse without borders 在win7安装的时候提示 Your computer span class hljs keyword has span span class hljs keyword not span been
  • 如何将git branch 和 commit id打印到内核log中?

    问题提出 xff1a 多项目多分支的开发模式中 xff0c 为了方便定位问题 xff0c 往往需要确认当前的问题日志对应的是哪个分支 xff0c 哪个提交 为了解决这个问题我们需要有一种方便的手段 解决方案 xff1a 首先想象的是是把gi
  • linux按进程名杀进程

    pkill 进程名 或是 killall 进程名 1 kill 9 ps ef grep 进程名关键字 gawk 0 grep print 2 tr s n 39 这个是利用管道和替换将 进程名对应的进程号提出来作为kill的参数 很显然上
  • IntelliJ IDEA中工具栏,功能区的显示和关闭

    点击 view xff0c 点击toolbar 显示工具栏 xff0c tool buttons 功能区tab 官人打赏 xff1a http blog csdn net assassinsshadow article details 76
  • chrome 删除厌烦的桔梗导航

    最近突然出现了让人非常厌恶的桔梗导航 xff0c 楼主找了写办法 xff0c 解决了这个bug xff08 程序员的骄傲 xff0c 虽然网上可能有人已经搞好了 xff09 我的系统是win10 1 开始菜单中找到chrome并打开文件位置
  • jetbrans rider 格式化代码时,{}不换行

    因为之前是写JAVA的 xff0c 所以对代码的格式优点洁癖 我希望看到的代码格式是这样的 span class hljs keyword private span span class hljs keyword void span spa
  • unity 设置物体不能被穿透

    墙壁box collider Is Trigger不勾选 cube xff0c rigidbody collision detection 设置为continuous dynamic
  • Docker实践笔记6:PHP容器制作

    容器介绍 此容器包含 PHP 7 3 和Nginx1 18环境 xff0c 用户可以自己使用Makefile 一键编译安装PHP环境 xff0c 也可以直接使用制作好的镜像运行项目 容器源码下载 git clone https github
  • GCD优化Tableview列表大图卡顿实用方法

    NSString filepath 61 xxxxx if NSFileManager defaultManager fileExistsAtPath filepath 异步加载图片 dispatch queue t queue 61 di
  • iOS 中通常加载 HTML 字符串

    有时候后台会返回多行文字 xff0c 其中文字中某写大小 xff0c 颜色需要特殊订制就会比较麻烦 xff0c 会用HTML 字符串返回给前台 假如后台返回的是responseData 64 34 activityMsg 34 这个 xff