2.视图绘制

2021-09-10  本文已影响0人  LucXion

从视图设置、缓存、像素对齐以及图层应用来优化绘图速度,使用预渲染图形避免应用程序过于膨胀

iOS主要的绘图系统有UIKit、Core Graphics(Quartz)、Core Animation、Core Image 、OpenGL ES

视图绘制流程

所有的绘制都发生在主线程,这也是不要将耗时操作放在主线程的原因之一。而且必须理解一点,绘制并不是实时发生的,有些操作只会给视图打上标记,绘制发生在方法完成后。

在后台线程绘图的风险:对于UIKit来说,绘图不是线程安全的。在后台修改视图会导致未定义的行为,包括绘制出错、崩溃。

视图的绘制与布局

布局(重新排列):使用GPU对位图进行移动、隐藏、显示、旋转、变形、合并的成本都非常低

一个视图调用setNeedsDisplay会被标记为“需要刷新”,并将在下一次绘制周期中被重绘,非必要尽量不要手动调用。UIKit视图自动管理重绘操作,因此这里讨论的多为自定义视图。

旋转或滚动设备,UIKit会自动调用setNeedsDisplay,会逐个调用layoutSubviews。所以覆盖layoutSubviews方法可以避免视图的重绘,提升流畅度。

只要在drawRect方法中不考虑bounds,那么屏幕旋转时一般也不会出现问题

反锯齿

透明、不透明、隐藏

上一篇 下一篇

猜你喜欢

热点阅读