《iOS 三问》 -- iOS UI 显示的原理及优化策略 (中) -- iOS UI 优化工具
工欲善其事,必先利其器。在进一步对 UI 优化进行探索之前,我们有必要一起先学习下在 iOS 性能优化中常用到的一些工具。有了上一章 iOS UI 显示基础 的学习,我们应该可以理解这些工具的用途。本章主要也是以了解为主,在下章中,我们会深入到具体的问题,运用我们学到的知识与工具具体地解决之,真正达到学有所获。
1 iOS UI 优化原则
《iOS 三问》 -- CALayer 的专用图层
各种 CALayer 子类可以满足各种界面绘制的场景。这算是 CALayer 对外提供的工具类了,用它们可以方便地绘制你想要的图形。
绘图时要注意的点:
- 一般要设置 layer 的 contentScale = [UIScreen mainScreen].scale;
- 使用传用图层可以直接添加,无需手动调用
setNeedDisplay
方法;
《iOS 三问》 -- iOS UI 显示的原理及优化策略 (上) -- iOS UI 显示基础
iOS 提供了非常丰富且性能优越的 UI 工具栈,加上自己底层已经做了足够好的优化,直接使用 UIKit 库的基本 API
或 CoreAnimation 库的基本 API
已经可以绝满足大部分的工作需要了。
但是有时我们仍然会遇到一些显示上的性能瓶颈问题,这时怎么去优化呢?我觉得我们应该从基础入手,先搞懂 iOS 中 UI 图像是怎样显示到屏幕上的,经过了哪些 UI 栈,他们各自有什么特点又存在哪些缺点,从而找到优化的方向,再结合一系列优化工具与方法,尝试将问题解决。
《iOS 三问》 -- CALayer 常用几何变换 transform
和 UIView 一样,CALayer 也可以设置 Transform(那当然,因为 uiview 的绘图就是靠 layer 来实现的),而且 layer 的 transform 比 view 来说要强大太多了。
《iOS 三问》 -- 从动画系统的实现谈 iOS 核心动画
Core Animation 库是 iOS 动画技术的基础,由一系列类与子类组成(他们基本都有个特点就是以各种 CA 开头,如 CALayer,CAAnimation)。我们之前学习到的 View 动画,隐式 Layer 动画等,都是基于 Core Animation
库的一个封装实现。Core Animation
又称显式动画,使用显式动画技术,我们可以更细致地定义我们要的动画的整个实现过程。
通过本章,我希望和大家一起不仅掌握 iOS 的动画编程,更掌握 UI 系统关于动画编程的核心技术与探索核心技术的方法。
《iOS 三问》 -- CALayer 常用显示属性
CALayer 有许多内置的属性,这些属性可以帮助你方便地创造出各种静态特效,比如给图片加边框,制作圆角等。
我们先罗列 CALayer 的主要属性与方法,然后着重介绍其中的几个常用的静态视觉效果。