背景:

功能:回复列表

要求:界面按UI给的效果图

收到的数据:带各种标签的html格式的字符串(包括web端的表情图片)

如果只是想简单的加载HTML(包括图片),点击这里。

解决方案:UILabel或UITextView加载富文本取代带图片的HTML

过滤掉 web端 回复内容 已知 的所有标签

NSString *text = allHtmlText;

//NSLog(@"这是评论的内容%@",text);

text = [text stringByReplacingOccurrencesOfString:@"

" withString:@""];

text = [text stringByReplacingOccurrencesOfString:@"

" withString:@"\n"];

text = [text stringByReplacingOccurrencesOfString:@"" withString:@""];

text = [text stringByReplacingOccurrencesOfString:@"" withString:@""];

text = [text stringByReplacingOccurrencesOfString:@"" withString:@""];

text = [text stringByReplacingOccurrencesOfString:@"" withString:@""];

text = [text stringByReplacingOccurrencesOfString:@"" withString:@""];

text = [text stringByReplacingOccurrencesOfString:@"" withString:@""];

2、创建attributedString并获取其中的图片URL及其范围

NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text];

[self getImageurlFromHtml:string];//具体实现放在文章后面

循环遍历创建图片附件 并 替换原有范围的字符串

for (int i= 0 ; i< self.rangeArr.count; i++) {

// 创建图片图片附件

NSTextAttachment *attach = [[NSTextAttachment alloc] init];

NSString *imageUrlStr = self.imageurlArray[i];

NSURL *url = [NSURL URLWithString:imageUrlStr];

NSData *imageData = [NSData dataWithContentsOfURL:url];

attach.image = [UIImage imageWithData:imageData];

attach.bounds = CGRectMake(0, 0, 15, 15);

NSAttributedString *attachString = [NSAttributedString attributedStringWithAttachment:attach];

// 点击图片跳转到safari

NSMutableAttributedString *maImageStr = [[NSMutableAttributedString alloc] initWithAttributedString:attachString];

[maImageStr addAttribute:NSLinkAttributeName value:self.imageurlArray[i] range:NSMakeRange(0, maImageStr.length)];

NSString *rangeStr = self.rangeArr[i];

NSRange range = NSRangeFromString(rangeStr);

if (i>0) {

NSInteger length = 0;

for (int j = 0; j

NSString *rangeStr0 = self.rangeArr[j];

NSRange range0 = NSRangeFromString(rangeStr0);

length = length + range0.length;

NSLog(@"\nlocation:%ld\nlength:%ld\nstringlength:%ld",range0.location,range0.length,string.length);

}

range.location = range.location - length + i;

}

//创建NSMutableParagraphStyle实例

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];

//设置行距

[style setLineSpacing:2.5];

//根据给定长度与style设置attStr式样

[string addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, string.length)];

[string replaceCharactersInRange:range withAttributedString:maImageStr];

}

4、设置UI给定的样式

self.textView.scrollEnabled = NO;

[string addAttribute: NSForegroundColorAttributeName value: [UIColor orangeColor] range: NSMakeRange(0, string.length)];

self.textView.attributedText = string

获取图片URL方法

- (NSArray *) getImageurlFromHtml:(NSMutableAttributedString *) webString

{

if (webString.length==0) {

return nil;

}

NSString *webStr = [NSString stringWithFormat:@"%@",webString];

self.imageurlArray = [NSMutableArray arrayWithCapacity:1];

self.rangeArr = [NSMutableArray arrayWithCapacity:1];

//标签匹配

NSString *parten = @"";

NSError* error = NULL;

NSRegularExpression *reg = [NSRegularExpression regularExpressionWithPattern:parten options:0 error:&error];

NSArray* match = [reg matchesInString:webStr options:0 range:NSMakeRange(0, [webString length] - 1)];

for (NSTextCheckingResult * result in match) {

//过去数组中的标签

NSRange range = [result range];

[self.rangeArr addObject:NSStringFromRange(range)];

NSString * subString = [webStr substringWithRange:range];

//从图片中的标签中提取ImageURL

NSRegularExpression *subReg = [NSRegularExpression regularExpressionWithPattern:@"http://(.*?)\"" options:0 error:NULL];

NSArray* match = [subReg matchesInString:subString options:0 range:NSMakeRange(0, [subString length] - 1)];

NSTextCheckingResult * subRes = match[0];

NSRange subRange = [subRes range];

subRange.length = subRange.length -1;

NSString * imagekUrl = [subString substringWithRange:subRange];

//将提取出的图片URL添加到图片数组中

[self.imageurlArray addObject:imagekUrl];

}

return self.imageurlArray;

}

点个赞或者小红心再走吧 ^ - ^

ios label html图片,iOS UILabel与UITextView加载图片富文本点击看大图相关推荐

  1. 用UIWebview、UILabeL、UITextView加载html富文本,图片太大显示不全的解决

    (1)用UIWebview加载 // 自适应尺寸大小 - (NSString *)autoWebAutoImageSize:(NSString *)html{//搜索标签文本中的<img> ...

  2. js实现点击图片放大效果,以及懒加载图片

    js实现点击图片放大效果,以及懒加载图片 近期有个后端管理页面小优化,原来的图片是点击才会去后端请求图片展示到前端,用dialog的方式展示,但是不太直观 存在两个问题 1.点击查看后,电子照片会变形 ...

  3. iosxib 设置图片_修改xib 默认加载图片的路径

    问题描述:项目组件化重构的时候,主工程的中xib 中引用了图片(图片是放在子工程中),但是不能显示. 问题原因:主工程Xib 加载的图片访问默认的是 main Bundle 中的资源,图片是子工程的F ...

  4. android 实现异步加载图片,Android中ImageView异步加载图片类

    本源码是从网络找到经修改以方便直接调用感觉用着还可以 首先在项目中添加一个专门加载图片的类AsyncImageLoaderpackage com.demo.core; import java.io.I ...

  5. 记录webpack使用问题,使用报错“UnhandledPromiseRejectionWarning,file-loader图片过大,无法加载图片,打包html文件报错TypeError

    记录webpack使用报错 版本号问题 运行npm run build,报错 "UnhandledPromiseRejectionWarning: TypeError: this.getRe ...

  6. android 加载显示富文本——TextView显示富文本和WebView显示富文本,WebView显示图片适配屏幕宽度

    TextView加载显示 添加依赖 implementation 'com.zzhoujay.richtext:richtext:3.0.8' implementation 'com.zzhoujay ...

  7. android bitmap显示图片,Android_07 Android中Bitmap加载图片

    一:计算机表示图形的几种方式 二:Android加载大图片 原理: [1]获取手机分辨率 [2]获取图片分辨率 创建位图工厂的配置参数 获取图片宽高 [3]计算缩放比例 [4]显示缩放后的图片 示例代 ...

  8. java五子棋图片_java五子棋游戏如何加载图片

    展开全部 直接上程序吧: //wuziqi.java import java.applet.Applet; import java.awt.Button; import java.awt.Checkb ...

  9. html 页面怎么加载富文本,UILabel加载html富文本

    本文主要解决html标签之外文本属性设置 当APP里面有搜索的需求的时候,产品可能会要求关键字显示特殊颜色或者字体.其中一种可能性是服务器返回的数据是带有html标签的字符串,那么该怎么解决?当标签之 ...

最新文章

  1. Mac OS X 10.8.5 安装编译glib
  2. 从零开始玩转JMX(一)——简介和Standard MBean
  3. 简单哈弗曼树(Java)
  4. 【深度学习】手撕 CNN 之 AlexNet(PyTorch 实战篇)
  5. 迅捷路由连接服务器未响应,迅捷路由器通过falogin.cn登录不了管理界面的解决办法...
  6. soa示例_SOA示例应用程序
  7. [react] 说说你对React的reconciliation(一致化算法)的理解
  8. apachecommon连接mysql_使用Apache Commons的DBUtils工具包中的,QueryRunner查询数据库返回结果错误...
  9. 2019计算机视觉领域顶级会议时间表
  10. DevC++ 软件下载及安装教程(详细、具体)
  11. WEB端后台常用Axure元件库及框架模版
  12. 提供一个vs2010 sp1的下载
  13. 逻辑回归、LR算法、LR优缺点、LR推导、LR损失函数
  14. c语言 char作用,c语言中char型数据能直接运算吗?
  15. 学习Android studio 个人总结小经验
  16. 计算机软件定时运行,win10系统设置定时运行指定软件的详细方案
  17. 北大暑期学校第二天 整理(1)
  18. vim中删除当前行后面所有的行
  19. 【转】关于linux中wps出现系统字体缺失的解决方法
  20. vSphere7虚拟机迁移报兼容性问题无法迁移

热门文章

  1. python爬取新浪博客_python网络爬虫 新浪博客篇
  2. animate.css引入实现动画效果
  3. 螺旋矩阵(暴力算法)
  4. AndroidStudio使用手机进行模拟,出现Failed to commit install session 902060429 with command cmd package install-
  5. 小LightSwitch,别有洞天
  6. Visual Studio LightSwitch
  7. qt使用ttf在2440上字体太小的问题
  8. ESXI 无法打开磁盘“XXX.vmdk”或其所依赖的快照磁盘之一
  9. 二十周岁的一篇小作文
  10. RabbitMQ第二种模型--workqueue