ios7 新增的TextKit 技术 从书上看到的……

首先需要实例化3个对象

NSTextStorage //存储字符的相关属性 包括颜色等

NSLayoutManager //将字符变化反应到NstextContainer中

NSTextContainer //定义文本可以排版的区域

它们之间的关系是  [ NSLayoutManager addTextContainer: NSTextContainer]

[NSTextStorageaddLayoutManager:NSLayoutManager];

代码是

//将文字取出来 加到 NSTextStorage实例中

NSTextStorage *textStorage=[[NSTextStoragealloc]initWithString:self.textView.text];

//定义排版大小

CGRect textViewRect=CGRectInset(self.view.bounds,10, 20);

NSTextContainer* textContainer=[[NSTextContaineralloc]initWithSize:textViewRect.size];

//将排版大小加到  NSLayoutManager 对象中 它会将变化的字符串反应到文本上

NSLayoutManager *manager=[[NSLayoutManageralloc]init];

[manager addTextContainer:self.textContainer];

//将 NSLayoutManager 对象添加到NSTextStorage中

[textStorageaddLayoutManager:manager];

//实例化textView 并定义排版区域

self.textView =[[UITextViewalloc]initWithFrame:CGRectMake(0,0, self.view.frame.size.width,500) textContainer:self.textContainer];

self.textView.text=@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.";

[self.viewaddSubview:self.textView];

//设置文字效果设置效果必须放在这里之间 [textStorage beginEditing]--[textStorage endEditing]

[textStorage beginEditing];

//声明一个字体方式的字典

NSDictionary *attrsDic=@{NSTextEffectAttributeName:NSTextEffectLetterpressStyle};

NSMutableAttributedString *assrStr=[[NSMutableAttributedStringalloc]initWithString:self.textView.textattributes:attrsDic];

[textStorage setAttributedString:assrStr];

//设置文字效果的方法 需要自己写

[self markWord:@"d"inTextStorage:textStorage];

[selfmarkWord:@"b"inTextStorage:textStorage];

[self markWord:@"c"inTextStorage:textStorage];

[textStorage endEditing];

-(void)markWord:(NSString *)word inTextStorage:(NSTextStorage *)textStorage

{

//设置某一文字效果

//正则判断是否存在word

NSRegularExpression *regex=[NSRegularExpressionregularExpressionWithPattern:word options:0error:nil];

//存在word 就把存在的word 作为 NSTextCheckingResult 对象 存到数组中

NSArray *maches=[regexmatchesInString:self.textView.textoptions:0range:NSMakeRange(0,self.textView.text.length)];

for (NSTextCheckingResult *resultin maches) {

NSRange matchRange=[ result range];

//添加字体效果

[textStorage addAttribute:NSForegroundColorAttributeNamevalue:[UIColorredColor] range:matchRange];

}

}

以上是设置文字效果的 下面是设置图文混排的

首先要放置一张图片 把它放到textView  层上面 它们的父视图都是 self.view

[self.viewinsertSubview:self.textViewbelowSubview:self.ImageView];

//将图片放大一些

CGRect rect= CGRectMake(self.ImageView.frame.origin.x-10,self.ImageView.frame.origin.y-10,self.ImageView.frame.size.width+20,self.ImageView.frame.size.height+20);

CGRect imageRect=[self.textViewconvertRect:rect fromView:self.view];

//获取贝塞尔曲线 的四个点

UIBezierPath *bezierPath=[UIBezierPathbezierPathWithRect:imageRect];

//这句话 就是图文混排

self.textView.textContainer.exclusionPaths=@[bezierPath];

也是初学 写的不是很清楚 见谅希望有些评论

分别是

textView 的设置文本中某一文字的字体颜色以及图文混排相关推荐

  1. Android中实现不同文字颜色和图文混排的Span总结

    一.怎么在TextView中设置首行缩进两个字符 在string资源文件中,在文字的前面加入"\u3000\u3000"即可实现首行缩进 在Java代码中,使用setText(&q ...

  2. Java如何设置word中某段文字的字体/段落样式

    前言: 在我们的OA系统中,有时需要将某段文字字体/大小/颜色/段落样式做一个统一修改,或者直接在某个位置插入一段带样式的内容.这就需要我们学习微软activex控件的使用了.但是这需要开发者具备将a ...

  3. iOS 设置Label中特定的文字大小和颜色

    直接上代码: _price = @"27"; NSMutableAttributedString *attributedString = [[NSMutableAttributed ...

  4. PHP提取富文本中的纯文字

    有时候富文本的内容需要放到列表页进行展示,这个时候就不能直接把content展示出来了,需要进行数据处理(只取文字部分)来展示 /*** 提取富文本中的纯文字* addtime 2020年8月10日 ...

  5. Android TextView中图文混排设置行间距导致高度不一致问题解决

    Android TextView中图文混排设置行间距导致高度不一致问题解决 参考文章: (1)Android TextView中图文混排设置行间距导致高度不一致问题解决 (2)https://www. ...

  6. android textview 添加图片大小,Android_Android中使用TextView实现图文混排的方法,向TextView或EditText中添加图像比 - phpStudy...

    Android中使用TextView实现图文混排的方法 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到标签. 只有一个src属性,该属性原则上应该指向一个图像地址或可 ...

  7. (一一二)图文混排中特殊文字的点击与事件处理

    在上一篇文章(一一一)图文混排基础 -利用正则分割和拼接属性字符串中提到了对attributedText的特殊处理,将其中的话题.URL都用红色进行了表示,如下图所示: 本节要实现的功能是这样的att ...

  8. 在word中怎么把文字往下挪挪_word图文排版技巧:图片移不动,要如何处理?

    编按:图文排版是文档排版的一大难点,每次在Word中插入图片后,发现图片无法移动.而且图片一多时,就更是难办,这可难倒了不少人?怎么办呢?只要你学会本文中的几个小技巧,无论多少图片,咱想把它移动到哪就 ...

  9. CAD中如何更改文字标注的颜色?

    CAD中如何更改文字标注的颜色?当我们想要在图纸上标注颜色的时候,为了看得更清楚就需要改变字体的颜色了,那么字体颜色该如何修改呢?下面来教你如何操作. 1.运行CAD制图工具,这里使用的是迅捷CAD编 ...

最新文章

  1. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...
  2. 【学习摘录】推荐算法
  3. 一个C#和C++执行效率对比的简单实例
  4. mysql+零时数据结构,MySql主要索引数据结构
  5. xStream完美转换XML、JSON
  6. 常用javascript代码
  7. Ognl,Context,ValueStack详解
  8. mysql数据库系统配置文件_跟我学虚拟机系统平台相关技术及应用——在CentOS系统中的MySql数据库系统配置文件中进行配置定义...
  9. vue.js 三种方式安装--npm安装
  10. 新版本springboot-整合多数据源拆分思路
  11. Swift 数组、字典
  12. 【渝粤题库】广东开放大学 公共部门人力资源管理 形成性考核
  13. 什么情况使用 weak 关键字,相比 assign 有什么不同?
  14. 通过javascript动态显示界面控件
  15. 用python写用手机发邮件_如何用python写发邮件?
  16. shell批量文件编码转换
  17. BP神经网络python代码实现
  18. [转]密码算法揭秘,一文让你成为国际安全算法与国密算法专家
  19. 旷视科技一面 2022.0804
  20. 图像颜色空间转换--RGB to Lαβ

热门文章

  1. 异构混合多云管理的需求,如何在SDN平台落地丨TF成立大会演讲实录
  2. Linux服务器搭建相关教程链接整理
  3. Python基础(三) | Python的组合数据类型
  4. 【UE4从零开始 083】体积光照贴图
  5. 程序员适当来点经济头脑
  6. 小米笔记本 Air 13 评测
  7. 【往届已检索】第二届电子、信息与计算技术前沿国际会议征稿中
  8. H5与其他平台交互框架
  9. python中answer是什么意思_用Python实现的quot;石头,剪刀,布quot; - The answer to everything - ITeye博客...
  10. 【Java】公式计算 | JEXL