1. 一张100*100,RGBA的png图像解压之后占多大内存空间?
套用公式,RGBA是32位
100*100*32/8 = 40000(字节)
40000/1024 = 39KB
2. Metal是什么?
3. 加载图片几种方式?
[UIImage imageNamed:@“xxx”] 系统缓存到cache中
[UIImage imageWithContentsOfFile:path] 不缓存
[UIImage imageWithData:data] 不缓存
4. imageWithName什么时候发生编解码,在什么线程?
5. 是否使用过CoreText或者CoreImage等?
6. 图像显示原理(UI渲染机制)?
CPU 和 GPU通过总线连接
CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。
CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通 讯的数据、控制及状态的总线。
GPU全称为Graphics Processing Unit,中文为图形处理器,就如它的名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。
CPU和GPU两个组件都是通过总线连接起来的,在CPU中输出的结果是一个位图 然后在合适的时机上传位图给GPU GPU获取位图后会做图层的渲染 纹理的合成 把结果放到帧缓冲区中 由视频控制器根据Vsync信号 提取帧缓冲区中的图形 然后在显示器中显示
CPU:
layout display Prepare Commit
UIView中的CAlayer负责图形的内容 系统通过drawRect:方法进行内容的绘制 绘制好的内容会经Core Animation 提交给GPU中的OpenGL(ES)进行位图的渲染 然后显示到屏幕上
对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Core Graphics)
GPU:
顶点着色 图元装配 光栅化 片段着色 片段处理 纹理的渲染
在iOS中是双缓冲机制,有前帧缓存、后帧缓存
7. UIView绘制原理及异步绘制?
当我们调用[UIView setNeedsDisplay]这个方法时,其实并没有立即进行绘制工作,系统会立刻调用CALayer的同名方法,并且会在当前layer上打上一个标记,然后会在当前runloop将要结束的时候(下一个绘制周期)调用[CALayer display]这个方法,然后进入我们视图的真正绘制过程
在[CALayer display]这个方法的内部实现中会判断这个layer的delegate是否响应displayLayer:这个方法,如果响应这个方法,就会进入到系统绘制流程中;如果不响应这个方法,那么就会为我们提供异步绘制的入口
在异步绘制中,会先判断代理是否有实现协议的drawLayer:inContext方法,如果有实现,就会创建一个空的寄宿图和Core Craphics的绘制上下文,为绘制寄宿图做准备,然后会在一个合适的时候调用一个我们非常熟悉的方法[UIView drawRect:]来获取寄宿图内容。[UIView drawRect:]这个方法默认是什么都不做,系统给我们开这个口子是为了让我们可以再做一些其他的绘制工作
无论是哪个分支,最终都会由CALayer上传对应的backing store(寄宿图,也即位图bitmap)给GPU,然后就结束了本次绘制流程
8. 如何用Core Graph画圆?
9. iOS屏幕刷新机制?
10. 视频丢帧丢哪个好点?
转载:https://blog.csdn.net/wangqifei111/article/details/115705857
查看评论