iOS 开发 Objective-C

第二篇:Objective-C 知识回顾的UI视图部分之二

2019-11-06  本文已影响0人  望穿秋水小作坊

2.1.图像显示原理

“图像显示原理”对于 iOS 开发工程师来讲是比较深层次的问题,说这个主要是为了后续理解 “UI 卡顿掉帧原因讲解”做一个技术上的铺垫和技术基础的准备。

图像显示过程原理

图像显示过程原理解释:

对于 iOS 工程师来讲 UI 视图显示到屏幕的大致过程如何?

UI 视图显示到屏幕的大致过程?视图解释:

2.2.UI卡顿、掉帧的原因

卡顿、掉帧原理图

卡顿、掉帧原理图解释:

2.3.滑动优化方案

基于 CPU:

基于 GPU:

CPU 资源消耗原因和解决方案:

对象创建:

对象调整:

对象销毁:

NSArray *temp = self.array;
self.array = nil;
dispatch_async(queue, ^{
  [temp class];
});

UI 的计算:

Autolayout:

文本的布局

图片的解码

图像的绘制

- (void)display {
   dispatch_async(backgroundQueue, ^{
       CGContextRef ctx = CGBitmapContextCreate(...);
       // draw in context...
       CGImageRef img = CGBitmapContextCreateImage(ctx);
       CFRelease(ctx);
       dispatch_async(mainQueue, ^{
           layer.contents = img;
       });
   });
}
GPU 资源消耗原因和解决方案:

相对于 CPU 来说,GPU 能干的事情比较单一:接收提交的纹理(Texture)和顶点描述(三角形),应用变换(transform)、混合并渲染,然后输出到屏幕上。通常你所能看到的内容,主要也就是纹理(图片)和形状(三角模拟的矢量图形)两类。

纹理的渲染:

视图的混合 (Composing):

图形的生成:

2.4.UIView 的绘制原理

UIView 绘制流程 CALayer 绘制流程

异步绘制

异步绘制的流程
项目传送门:UIEventDemo(注意观察日志输出)
回顾系列文章下一篇:Objective-C 知识回顾之语言特性
回顾系列文章上一篇:Objective-C 知识回顾的UI视图部分之一
上一篇下一篇

猜你喜欢

热点阅读