首页
网站首页
公司简介
资讯中心
推荐内容
返回顶部
渐变及复制,CoreText实现图文混排之文字环绕及点击算法
发布时间:2020-05-06 10:03
浏览次数:

翻译已与 raywenderlich 社区取得联系,原文链接

图片 1老司机带你走进Core Animation 之图层的透视、渐变及复制

图片 2CoreText实现图文混排之文字环绕及点击算法

本文由我们团队的 纠结伦 童鞋撰写。

是否想过把参与过的多个项目中功能相近的代码拆分成可复用的模块,是否想过与其他开发者分享你写的模块?

系列文章:

系列文章:

我们在开发程序的时候,程序内不同对象间的通信是不可避免的,iOS中主要有以下这些通信方式:

也许你想像 iOS SDK 按功能来组织 API 一样来模块化你的代码,也许也想像知名三方库那样发布自己的代码。

  • 老司机带你走进Core Animation 之CAAnimation
  • 老司机带你走进Core Animation 之CADisplayLink
  • 老司机带你走进Core Animation 之几种动画的简单应用
  • 老司机带你走进Core Animation 之CAShapeLayer和CATextLayer
  • 老司机带你走进Core Animation 之图层的透视、渐变及复制
  • 老司机带你走进Core Animation 之粒子发射、TileLayer与异步绘制
  • CoreText实现图文混排
  • CoreText实现图文混排之点击事件
  • CoreText实现图文混排之文字环绕及点击算法
  • CoreText实现图文混排之尺寸估算及文本选择

图片 3iOS中的通信方式

通过这篇文章你将会学会如何创建 Framework 以及如何进行发布。

这回呢,当然还是顺着头文件里面的几个类,老司机一个一个捋吧。

终于我来完成我CoreText图文混排的最后一章了。

图中按照耦合度的强弱和通信的形式进行了划分,这篇文章我们主要说一下Notifications。

iOS 8,Xcode 6 中,苹果提供了一种新的开发模板,Cocoa Touch Framework。这使得创建 Framework 更加容易。

老司机的想法就是要把CoreAnimation头文件中的类大概都说一遍,毕竟一开始把系列名定成了《老司机带你走进CoreAnimation》(深切的觉得自己给自己坑了。。。)。

先说一下我为什么会来补发这一章呢?

通知机制想必大家都很熟悉,平常的开发中或多或少的应该都用过。它是Cocoa中一个非常重要的机制,能把一个事件发送给多个监听该事件的对象,而消息的发送者不需要知道消息接收者的任何信息,消息的接受者也只是向通知中心(NSNotificationCenter)注册监听自己感兴趣的通知即可,任何对象都可以监听或者发送通知,这在很大程度上降低了消息发送者和接受者之间的耦合度。这也是iOS中观察者模式的一种实现方式。

Framework 有一下三个主要目的:

图片 4我给自己挖的坑

1.老司机最开始没有留demo,以至于这个博客老司机从发出来到现在整整维护了半年了=。=其实博客里面就是全部代码,但是宝宝们任性的要demo。

当我们发通知时,我们发送的是什么?答案是Notification,一个Notification对象封装了通知发送者想要传递给监听的的信息,它有3个属性:

  • 代码封装
  • 代码模块化
  • 代码复用

所以呢,在今天的博客里你将会看到以下截个内容

2.时间长了,阅读量也上去了,老司机觉得自己有必要对粉丝们负责了

@property (readonly, copy) NSString *name; // 通知的名称,用来标示一个通知,一般为字符串@property (nullable, readonly, retain) id object; // 任意想要携带的对象,通常为发送者自己@property (nullable, readonly, copy) NSDictionary *userInfo; // 附加信息

你可以在你的其他 App 中,团队成员,或 iOS 社区分享你的 Framework。swift 的访问控制机制使得 framework 在代码模块之间提供了健壮可靠的接口。

  • CATransform3D
  • CATransformLayer
  • CAGradientLayer
  • CAReplicatorLayer
  • DWMirrorView

3.有很多同学询问是否能做出文字环绕的效果,老司机之前的确也没有写过,这一篇是要补上的。

通知就是以Notification的形式从通知发送者发出,到通知中心,然后再分发给所有监听该通知的对象的,通知监听者们接收到通知之后,可以获取到传递过来的Notification对象,从而获取里面封装的一些信息,做相应的处理。

swift 中,module 是作为一个编译发布的代码单元。framework 和 App 都是一种 module。

废话不多说,直接进入主题。

4.关于点击事件,老司机在第二篇文章中有提到过一个思路,是每次遍历所有CTRun去做的。后期老司机考虑到遍历的实现效率似乎有些低,所以老司机研究了一下,重新整理思路,优化了一下算法。

通知中心是整个通知机制的关键所在,它管理着监听者的注册和注销,通知的发送和接收。通知中心维护着一个通知的分发表,把所有通知发送者发送的通知,转发给对应的监听者们。每一个iOS程序都有一个唯一的通知中心,你不必自己去创建一个,它是一个单例,通过[NSNotificationCenter defaultCenter]方法获取。

友情链接: 网站地图
Copyright © 2015-2019 http://www.nflfreepicks.net. 新葡萄京娱乐场网址有限公司 版权所有