您的位置:首页 > 产品设计 > UI/UE

iOSProgramming: The Big Nerd Ranch Guide (4th Edition) 阅读笔记-关于 View 的 Redrawing 和 Run Loop

2015-06-07 10:30 447 查看
关于View
的 Redrawing
与 Run Loop

当 application
启动后,它会开始一个 run loop
用以监听如触摸一类的事件。当事件触发时,run loop
会寻找合适的处理事件方法,这个处理方法又会调用其他方法来处理,一旦所有方法被执行完毕,控制权会被交还给 run loop。

当 run loop
重新获得控制权后,它会检查一个名为 dirty list
的列表,其中包含需要重新绘制的 view
。然后 run loop
会在整个 hierarchy
中的 view
被重新叠加在一起前,发送 drawRect:
消息给 dirty list
中的 view

需要优化的部分(以便保持界面随时可响应):

只重新渲染必要的 view

每个 event
只发送一次 drawRect:
消息
在 run loop
的最后批量处理需要重绘的 view
以避免不必要的重复重绘

当完成了对事件的响应,并将控制权交还给 run loop
后,若该 view
发生了改变,则还需要将该 view
加入 dirty list。原生的
view 会自动进行这项工作,而自定义的 view
则需要手动向它自身发送 setNeedDisplay
消息。

可选的优化方法(不常用):

通过发送 setNeedsDisplayInRect:
消息,只标记 view
的一部分需要重绘。

该方法比较复杂且对性能没有显著提升,因此除非重绘过程明显拖慢了 app
,否则一般不使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: