对于重新布局和重绘的理解
来源:互联网 发布:python sys.exit 2 编辑:程序博客网 时间:2024/06/05 09:21
原文转自http://stackoverflow.com/questions/2807137/what-is-the-relationship-between-uiviews-setneedslayout-layoutifneeded-and-lay
重新布局:VC的view里有一个自定义的customView,这个customView的bounds是{0,0,300,300},这个时候,你需要在点击这个customView的时候,让他的bounds扩大到{0,0,500, 500},那么这个时候,customView里面的子控件是依托于这个customView的左上角进行布局的,那么这个时候按照正常的理论,它内部的子控件是需要重新再来调整一次布局的,这个就是重新布局,重新布局的时机很多:比如改变当前view的bounds,旋转屏幕,拖动scrollView
【view layoutSubviews】是一种让人崩溃的写法,因为这个方法的触发时机根本就不是手动去调用,而是通过调用setNeedsLayout或者layoutIfNeeded来触发
setNeedsLayout这个方法是给需要改变的view设置flag(flag就是单独的指一个标志,并不是还是必须就是flag这个变量),标示这个view即将要被重新布局,会唤起layoutSubviews这个方法
如果没有调用layoutIfNeeded,唤起layoutSubViews的时机会是下一次runloop进行重绘内容之前,如果手动调用了这个view的layoutIfNeeded,就会立马调用这个view的layoutSubviews方法进行布局改变
最常见的手动去调用layoutIfNeeded就是,用约束布局的时候,做动画,setNeedsLayout不是重绘,是重新布局,重绘是setNeedsDisplay,既然重新布局,必然也会重绘。那么如果没有调用layoutIfNeeded 但是给setNeedsLayout的flag设置标志要求重绘,那么并不会调用layoutSubviews,时机是下一次的runloop
- 对于重新布局和重绘的理解
- 对于重构的部分理解
- Java:对于Borderlayout布局管理的理解
- 重新理解css布局
- 重新调整布局的宽度和高度
- 从头开始学习yii2---4.对于布局文件的理解
- 讲一些对于页面布局以及html的理解
- 对于关键字Ref和Out的理解
- 对于关键字Ref和Out的理解
- 对于new和override的理解
- 对于数组和指针的理解
- 对于Retain和Assign属性的理解
- 对于Retain和Assign属性的理解
- 对于Intent和IntentFilter的理解记录
- 自己对于BOF和EOF的理解
- 对于this和$(this)的理解
- 对于this和$(this)的个人理解
- 对于缓存的理解和分析。
- C\C++中结构体变量与结构体指针内存分配问题
- win10如何使任务栏全透明
- Thread And Timer
- Sharing Files with NFC ->Receiving Files from Another Device
- MongoDB入门知识
- 对于重新布局和重绘的理解
- jni文件的编译和使用
- PHP-Ajax实现无刷新分页
- Python的垃圾回收机制深入分析
- 第五章 SQLite
- Spring AOP(3)基于XML配置实现的示例
- jquery select 默认选中给定值
- getchar()啥时候用
- 资源链接