动画

《iOS Core Animation》读书笔记

2017-07-13  本文已影响72人  Nemocdz

CALayer

UIView = 绘制 + 响应触摸事件

UIView未暴露CALayer的接口

图形和几何

frame:外部坐标,父图层坐标,大小为边与xy轴平行能完全容纳图层的最小矩形

bounds:内部坐标,自身坐标,大小为图层大小的矩形

anchorPoint:锚点,旋转基点,左上角{0,0},右下角{1,1}

center(CALayer的position):anchorPoint在父图层的坐标

视觉效果

拉伸过滤

以正确比例和1:1像素显示图片在屏幕上的好处

CAShapeLayer

矢量图像而不是bitmap绘制图层子类

优点:

CATextLayer

CALayer的子类,几乎拥有UILabel所有绘制特性

渲染快于UILabel,运用Core text

性能调优

动画和图层被单独的渲染服务进程处理

动画发生过程
  1. 布局
  2. 显示
  3. 准备-发送动画数据到渲染服务
  4. 提交-打包图层和动画属性发送到渲染服务
  5. 对所有图层属性计算中间值,设置OpenGL几何形状(纹理化三角形)进行渲染
  6. 在屏幕上渲染可见三角形(GPU执行,前面都在CPU)
可能影响GPU绘制的情况
可能影响CPU计算的情况
图像IO
文本

尽可能避免改变文本的frame,因为需要重绘

光栅化

将图层及其所有效果绘制成一个屏幕外的图像并缓存,避免运用在内容不断变动的图层上

离屏渲染

在混合复杂效果无法直接渲染时,会通过分步渲染,会把分布渲染的结果临时储存在屏幕外的内存中等待组合渲染

影响性能在于

图层的属性触发离屏渲染

图层混合
颜色格式

苹果的GPU只解析32bit的颜色格式,其余的格式CPU会先进行颜色格式转换,再让GPU渲染。

图像大小缩放

image和imageView的大小尽量保持一致,避免在改变view大小时重复计算缩放

上一篇 下一篇

猜你喜欢

热点阅读