iOS UI绘制和布局基础解析
来源:互联网 发布:apache derby 编辑:程序博客网 时间:2024/05/22 08:13
layoutSubviews的触发时机:
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、view的Frame发生改变会触发layoutSubviews
4、滚动UIScrollView会触发layoutSubviews
5、旋转屏幕会触发父UIView的layoutSubviews
6、改变UIView大小的时候也会触发父UIView的layoutSubviews
注意:调用layoutSubviews需要调用它的父类方法即 [super layoutSubviews]
UIView的setNeedsDisplay和setNeedsLayout方法比较:
1、首先两个方法都是异步执行的
2、setNeedsDisplay会调用drawRect方法
3、setNeedsLayout会调用layoutSubViews
-layoutSubviews方法默认没有做任何事情,需要子类进行重写
-setNeedsLayout方法标记view为需要重新布局,不是立即刷新,但layoutSubviews一定会被调用
-layoutIfNeeded方法如果有需要刷新的标记,立即调用layoutSubviews进行布局;如果没有标记,则不会调用layoutSubviews
注意:如果要立即刷新要先调用[view setNeedsLayout]再调用[view layoutIfNeeded]
视图第一次显示之前,默认标记为需要刷新,可以直接调用[view layoutIfNeeded]
sizeToFit会自动调用sizeThatFits方法
sizeToFit不应该在子类中被重写,应该重写sizeThatFits
sizeThatFits传入的参数是receiver当前的size,返回一个适合的size
sizeToFit和sizeThatFits方法都没有递归,对subviews不负责只对负责自己
setNeedsLayout会在receiver标上一个需要被重新布局的标记,在下一个周期自动调用layoutSubviews
setNeedDisplay会在receiver标上一个需要被重新绘制的标记,在下一个周期自动重绘
layoutSubviews方法调用先于drawRect
- iOS UI绘制和布局基础解析
- Android源码基础解析之Activity布局绘制流程
- ios UI的自适应和布局
- Android UI基础布局
- 【IOS】基本UI布局
- 【Android】の基础——布局优化和过度绘制
- FrameLayout布局绘制流程解析
- android 布局绘制流程解析
- Android UI测量、布局、绘制过程探究
- IOS--UI--XML 解析
- IOS开发的OC基础和UI基础的简介
- ios开发OC基础和UI基础的简介
- CSS和UI布局
- Unity UI系统--基础布局
- 【ios 汇总 - UI 视图布局 】
- IOS UI 自定义navigationBar布局
- IOS(UI)_AutoLayout(自动布局)
- iOS基础UI
- magento 给customer添加属性 给order添加属性
- 整数划分
- Android自定义控件无法通过代码修改大小、高宽,setMinimumHeight无效的问题
- OC中对数组排序的几种方法
- Android 6.0运行时权限
- iOS UI绘制和布局基础解析
- [小技巧]如何得到C语言中int最大值
- 线程
- 1863: [Zjoi2006]trouble 皇帝的烦恼
- 47、Java中怎么把字符串转换成日期格式啊
- CSR8670的A2DP与AVRCP的应用笔记
- Android中Fragment学习笔记
- 解决“U盘插入Ubuntu后文件只读且无法删除”问题
- cocos2d-lua09apk打包发布&C++注册到Lua