CoreText学习笔记二

我们都知道最初CoreText的设计是针对Mac开发的,所有的坐标系都是基于Mac的坐标系,原点在左下角,上一节的笔记中我们已经对坐标系进行了反转.而且介绍了关于坐标系旋转,放缩,平移的函数和方法.现在我们就进行下面的学习.

先看下面两个方法:


方法解释


先看第一个CGMutablePathRef这个,他是creat了一个CGMutablePathRef的实例,那它的作用到底是做了什么啦,我们都只到苹果开发的语言都是能够从字面看出大概的意思的,那就是创建了一个可变的文本路径,为什么说是可变啦.因为他和集合类一样都是分为可变和不可变的,他所对应的不可变的类型就是CGPathRef.为什么要创建这个可变的文本路径啦,因为我们想要在后面通过CGPathAddRect函数来得到一个填充区域,因为我们在后面需要将其放入到一个框架中.这个两个函数也可以合并为一个函数.


创建和添加区域合并成一个

上面两个函数最终的结果和这个函数的结果是一致的.代码贴出来了,效果就不看了,下去自己可以尝试一下.

好了现在我们需要的填充路径也有了,那现在还缺什么啦,

1.绘制的文本还没有出现啦.

2.说了用CoreText绘制在上面,那到底如何绘制的啦.下面就开始我们这两点研究吧.

了解TextKit的人知道,CoreText和TextKit都可以使用属性化字符串,可以使用NSMutableAttributedString也可以使用CFMutableAttributedString对象,这里的转换桥接关系就不讲了,如果有兴趣,改天可以专门写一篇Foundation和CoreFoundation对象之间的桥接和转换.

好了说了这么多,那我们先创建绘制的文本吧


属性化字符串

创建玩绘制文本,拿到一接下来该怎么做啦.

文本这个东西都讲究字体,字形,和排版等,那在CoreText是如何管理这个排版和布局啦.

CoreText为我们提供了一个创建框架排版器的方法,而且和上面的这个属性化字符串相关.


排版器

他是利用属性花字符串创建了一个排版器,现在我们不过多的研究这个排版器.

从上面一路创建和修改下来发现有几个报黄色警告,提示没有用到,好了现在就搞到用到他们的时候了,到底什么东西要用到这些东西啦.那就是将整个填充区域都能放的下的框架.

看下面的代码是如何创建这个框架的.


框架和绘制


这个函数需要的参数都有,排版器,CFRange对象和上面创建的填充区域,和一个存放单个字形等属性的CFDictionary.这个函数并不能保证文本正好可以放进框架中,CTFramesetterCreateFrame只是在填充区域中布局文本,直到空间不足或者是文本结束.效果如下:文本较长,绘制不下的情况.


将文本字数扩充

效果图如下

CoreText学习笔记二_第1张图片
未能显示完整

然后就是将框架会知道上下文中,并释放上面所使用creat创建的关于CoreFoundtion框架的对象.

那么简单的就这么完成了学习,下面就该进入复杂的学习了.如果还有什么没有理解或者是有什么更好的想法的可以评论或与我联系.如果喜欢文章或者想了解更多的关于CoreText的内容就请动动小手,点下关注,不会怀孕的,不要怕!带走想要的知识,留下你们的❤️.

谢谢.

本人联系方式:qq:513961360

email:[email protected]

也可以加我们的qq群希望能与朋友们一起聊天和学习.群里还有很多iOS开发者,帮助我们解决问题,并且同时学习.

qq群号:580284575

你可能感兴趣的:(CoreText学习笔记二)