2021_UI_绘制&动画
一、概括
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和对齐
四、下拉动画实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了