统计无用页面的一个思路
分享一个可以统计业务无用页面的一个思路,当然这个是一个相对下游的方案,对上游基础设施有较高的要求。
NSObject
类的初始化的过程。我们先来了解下 load
方法,当一个类或者分类添加到运行时时候会被调用,通常的用法是在类中实现这个方法然后我们去做 Method Swizzling 操作,实质上就是可以在运行时干预类的加载。通过简单的Demo我们可以发现,一个类和她的子类都会执行 load
方法,而且子类会后置执行 load
方法。同时,分类中的 load
方法会先于主类中的。
我们可以找到 objc-runtime-new.mm
中的 prepare_load_methods
方法
这篇我们来讲一下点击事件,看了不少博客将图文混排、点击事件等等都放在一篇来讲,这样的话可能对于我这种小白来说有点难消化,我就将几种需求放在几篇细细道来
我们通过之前几篇已经可以直接进行图文混排了,这次我们需要给富文本加上点击的方法,点击回调的时候将对应的字符串、绘制范围、字符串的位置等等信息
还是捋一下思路,我们的切入点还是在绘制的时候将要添加的点击事件通过自定义key
值添加到富文本的addAttributes
中,但是我们value
值传入的是自定义的CoreTextClickModel
对象,然后在绘制CTRun
的时候识别我们的自定义key
值,再将对应的绘制区域转为NSValue
为key
CoreTextClickModel
对象为value
放到字典里面方便遍历时候查找,然后在点击的时候使用enumerateKeysAndObjectsUsingBlock
方法遍历字典中的key
判断点击的区域是否在区域内然后再使用对象中的值和执行存储的Block
,大概这样的流程,我们还是看一下代码。
我们接着上一篇讲,上篇已经大概的讲了下单纯的绘制文字,但是一篇文章一般都会有几张图片的,而且是嵌入文字内的,不一定是将上下文字换行来处理的,我们今天就讲一下如果图片嵌入了文字该如何处理。
我们已经可以正常绘制富文本了,也可以通过CTLine
和CTRun
来分别对每行或者每行的绘制对象来进行干预来完成绘制。
我们来简单捋一下图文混排的思路,一些准备操作和之前是一样的,只是在将富文本传递给CTFramesetterRef
工厂对象时候需要将图片插入富文本中,因为Core Text
无法直接绘制图片,只能是将相关的代理传递给一个既定的富文本,之后遍历CTRun
来识别再去使用Core Graphics
对图片进行绘制在View上面,而属性字符串里面只能存一些高度距离相关的属性。