iOS UI 优化博文大纲
2019 年开年第一篇博文,今天先起个头。
今年第一个主题是关于 UI 界面实现原理,UI 目前实现主要方式在其实现上相关缺陷。开始从 Core Animation
框架总结以及实现方式上讲解,然后从 Core Graphics
和 Core Iamge
在绘制层面三者如何把 UIKit
控件如何实现绘制交由 OpenGL ES
| Metal
来实现每一帧绘制。
最后分析 FB
开源的框架 ASDK
和 YYKit
实现 UI
优化方式,对 Core Text
进行最后封装来结束 UI
专题。
iOS UI 架构图
iOS UI Strcture.pngCore Animation 大纲
Core Animation API |
层次 & 作用 |
---|---|
1、APP 结构层次 |
Core Animation a、 作为 UIKit 和 AppKit 内容实际绘制主要承担的载体,为具体在屏幕上控件内容绘制,布局以及提供隐式和显示动画提供优雅的 API 接口。b、 作为硬件绘制输入把需要显示具体内容传入 GPU 生成纹理在屏幕上进行渲染。 |
2、作用 |
Core Animation a、 通过 CATypeLayer 类族显示效果,位置布局为 UIKit 层提供底层绘制实现。b、屏幕上直接与渲染硬件直接进行内容绘制,实现各种酷炫的效果以及更加高效绘制。c、 通过 CATypeAnimation 及其属性 CATypeTiming 实现各种动画效果类型。d、为 UIKit 和 AppKit 代码块动画代理对象,提供具体实现支持。在 iOS 的主要职能是为 UIKit 框架在 APP UI 控件实现基础上的绘制。
|
注:参考资料会在 iOS UI 优化 - Core Animation 最后给出:
在 Core Animation
中可以看到在 Application
中 Handle Events
处理手势原理实际就是我们响应链处理过程。
响应链
iOS 空间绘制原理
Core Graphics 大纲
Core Graphics API |
层次 & 作用 |
---|---|
1、APP 结构层次 |
Core Graphics a、 作为基于 Quartz 绘图引擎来实现在 iOS 和 OS X 2D 图形绘制功能,接口实现是基于 C 不符合 iOS 中 ARC 内存管理方式需要进行手动管理其内存。 b、 作为 CA 层具体显示内容 CATypeLayer 层实际绘制执行者和 OpenGL 或者Metal 一起承担起界面具体的绘制工作。 |
2、APP 作用 |
Core Graphics a、 通过提供基础的 API 接口来实现控件在 UI 层面布局,色彩填充,画布绘制等具体的绘制实现。b、 通过针对不同的绘制对象:Window 、CALayer 、Bitmap 、PDF 和 Printer 来生成对应的 Context 实现具体内容的绘制生成可视化的效果展示在屏幕上。 c、 在文本绘制的过程中我猜测使用 PDF 文档解析的功能,为 Core Text 提供实际的计算,依据 Quartz 使用轮廓周围像素显示来实现抗锯齿完美展现文本显示。
|
Core Text 大纲
Core Text API |
层次 & 作用 |
---|---|
1、APP 结构层次 |
Core Text a、 作为基于 Core Graphics 封装实现,是 Apple 基础库中唯一一个处理字体绘制模块。b、 在 iOS 7 之后在此基础之上实现的 Text Kit 实现跨 UIKit 和 AppKit 来作为文本绘制。 |
2、作用 |
Core Text a、 通过以 Core Text 为基础实现文字绘制 Text Kit 来实现富文本绘制,展示丰富多彩的文字效果。b、 提供后台绘制能力,在实际绘制过程中可以放在 Background Thread 来实现绘制工作。c、 在实现中可以通过 CTRunDelegate 来设置 CTRun 来实现图文混排来时更加丰富的效果。 |
Text Kit 实现逻辑
Text Kit.png同时也会对本文进行在每一博文更新!!!
作者: JackJin Bai
第一次修改时间: 2019/1/6 20:37: 26
写于:广州市天河公园家里
网友评论