一、概括
Mac Quarts、QuartsCore、CoreGraphics
iOS QuartsCore 、CoreGraphics
Quartz 2D 是一个二维绘图引擎,同时支持 iOS 和 Mac 系统。其 API 采用 C 语言编写,来自 Core Graphics 框架,主要作用是绘图,可以绘制三角形、四边形、图片和文字等。
Quartz 2D能完成的工作:
绘制图形 : 线条三角形矩形圆弧等
绘制文字
绘制生成图片(图像)
读取生成PDF
截图裁剪图片
自定义UI控件
CoreAnimation 动画 包含在QuartsCore中
离屏渲染
https://www.yuque.com/shiwenwen-qfo44/nrzz49/kakkzs iOS离屏渲染的深入分析
https://www.cnblogs.com/huangzs/p/10250875.html
https://zhuanlan.zhihu.com/p/72653360
https://juejin.cn/post/6847902220017467406
1. 毛玻璃效果 (一定触发)
2. shouldRasterize 光栅化 (一定触发)
3. cornerRadius+maskToBounds(必须是叠加图层,例如UIImageView同时设置背景颜色+图片,才会触发)
4. 半透明视图混合时
5. 绘制文字的layer
mask 遮罩 (应该也是一定)
Group opacity 组透明 (关闭 allowsGroupOpacity ,自己进行 layer 透明度计算)
Shadow (设置 shadowPath 属性就可以避免阴影产生离屏渲染)
二、遮罩
https://www.jianshu.com/p/d8f060c21056
https://www.cnblogs.com/lxlx1798/p/9470653.html
属性用于指定使用哪一种算法去判断画布上的某区域是否属于该图形“内部” (内部区域将被填充)。对一个简单的无交叉的路径,哪块区域是“内部” 是很直观清除的。但是,对一个复杂的路径,比如自相交或者一个子路径包围另一个子路径,“内部”的理解就不那么明确了。
kCAFillRuleNonZero
字面意思是“非零”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点情况。从0开始计数,路径从左向右穿过射线则计数加1,从右向左穿过射线则计数减1。得出计数结果后,如果结果是0,则认为点在图形外部,否则认为在内部。
kCAFillRuleEvenOdd
字面意思是“奇偶”。按该规则,要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部。
三、图文混排 CoreText
CoreText入门(一)-文本绘制
CoreText入门(二)-绘制图片
CoreText进阶(三)-事件处理
CoreText进阶(四)-文字行数限制和显示更多
CoreText进阶(五)- 文字排版样式和效果
CoreText进阶(六)-内容大小计算和自动布局
CoreText进阶(七)-添加自定义View和对齐
四、下拉动画实现