美文网首页
2.视图绘制

2.视图绘制

作者: LucXion | 来源:发表于2021-09-10 18:17 被阅读0次

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

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

  • UIKit 最高级界面,是OC中唯一的界面。能够轻松的访问布局、组成、绘图、字体、图片、动画等。元素以UI作为前缀。

  • Core Graphics (也称Quartz2D) UIKit下的主要绘图系统,频繁用于绘制自定义视图。数据结构和函数以CG作为前缀。

  • Core Animation 提供强大的2D、3D动画服务。

  • Core Image 于iOS 5中出现的Mac技术。提供非常快的图片过滤方式,比如切图、锐化、扭曲和其他你能想象的变形效果

  • OpenGL ES 用于编写高性能游戏(特别是3D游戏)

视图绘制流程

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

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

视图的绘制与布局

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

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

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

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

反锯齿

  • 坐标尽量使用整型,或者.5,因为在视网膜屏幕下,一个点位代表两个像素点。

  • 尽量不要使用setCenter,而是使用setFrame,因为center可能会影响 像素对齐

  • 设置字体大小尽量奇数

透明、不透明、隐藏

  • alpha:屏幕上没有真正的透明,alpha决定的是视图信息在屏幕上的表现(“着色”)

  • opaque: 不会实际升高、降低透明度,仅用于绘图系统的优化,标记为opaque = 向系统承诺不透明,可以忽略覆盖在视图下的绘制。特别适用于滚动视图的优化(类似的属性有clearContextBeforDrawing)

  • hidden表示根本不会绘制,也没有动画效果

相关文章

  • 2.视图绘制

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

  • Activty视图加载流程浅析

    通过本文你可能会了解以下几个方面 1.Activity视图从准备到绘制显示的基本流程2.视图绘制和Activity...

  • 常见面试问题概括

    UI视图相关 *TableView重用机制? 答: *视图绘制原理?如何实现异步绘制? 答:UIView绘制原理 ...

  • Android-自定义View

    [1] Android如何绘制视图? 当用户将Android视图引入焦点时,Android框架会引导视图进行绘制。...

  • OpenGL ES(GLKView+GLKViewControl

    GLKView使用OpenGL ES绘制内容的视图默认实现 1:初始化视图 context 绘制视图内容时使⽤用的...

  • Android单排上王者系列之Android性能优化

    Android视图的绘制流程 Android中视图的绘制会经历三个阶段即onMeasure()、onLayout(...

  • 视图绘制

    本文要点 事件传递视图响应图像显示原理卡顿掉帧原因绘制&异步绘制离屏渲染 先看一下UIView和CALayer区别...

  • 绘制视图

    一直没有一个好的绘制视图的笔记,今天整理一下,分享给大家:不多说,直接上代码。 一、核心绘图(C语言风格调用函数)...

  • 绘制视图

    当我们想要重绘某个视图的时候,我们不能直接调用drawRect:的方法,因为该方法为系统自动调用,我们手动调用无效...

  • 视图绘制

    视图绘制是调用drawRect:方法来实现的。对于AppKit中的各种界面控件,系统默认实现了不同控件的界面绘制和...

网友评论

      本文标题:2.视图绘制

      本文链接:https://www.haomeiwen.com/subject/axsnwltx.html