(一一一)图文混排基础 -利用正则分割和拼接属性字符串

本文介绍了如何在iOS中实现图文混排,重点讲解了使用正则表达式查找特殊内容,结合NSAttributedString和NSTextAttachment展示表情图片与高亮文字的方法。详细阐述了从普通字符串初始化NSAttributedString,创建包含图片的NSTextAttachment,以及处理表情替换和尺寸计算的步骤。
摘要由CSDN通过智能技术生成

很多时候需要用到图文混排,例如聊天气泡中的表情,空间、微博中的表情,例如下图:

红心和文字在一起。

比较复杂的情况是表情夹杂在文字之间。

要实现这种功能,首先要介绍iOS中用于显示属性文字的类。

用于文字显示的类除了text属性之外,还有attributedText属性,这个属性是NSAttributedString类型,通过这个属性可以实现不同文字的不同字体、颜色甚至把图片作为文字显示的功能。

下面介绍这个字符串的使用。


以一条微博内容为应用场景,介绍如何从中找出表情、话题等内容,其中表情替换成表情图片,话题等高亮显示。

这里用到的内容主要有:正则表达式、NSAttributedString、NSTextAttachment等知识。

【正则表达式】

正则表达式在上一节(一一〇)正则表达式的基本使用与RegexKitLite的使用中有介绍,主要是为了找出所有特殊位置和非特殊位置。

NSAttributedString

这是一种能够对特定范围的文字设置属性、显示图片等功能。

下面介绍通过普通字符串初始化NSAttributedString,并且把其中的表情([<表情名称>])、话题(#<话题内容>#)、URL全部高亮的方法。

①通过微博字符串text初始化一个属性字符串。

 NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text];
②指定匹配规则。

 NSString *emotionPattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
 NSString *topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";
 NSString *urlPattern = @"[a-zA-z]+://[^\\s]*";
 NSString *pattern = [NSString str
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值