您的位置:首页 > 数据 >
View、Control、Layer对象的布局方法
来源:CSDN 2023-01-05 13:27:11


(资料图)

首先明确两个概念:

UIWindow 对象        : 整个程序中视图层次结构中最顶层,充当一个容器类。UIViewController 对象 :viewController 中一个 view属性是 view层次结构中rootView,可以添加 view构建复杂的视图结构,通过生命周期方法loadView、viewDidLoad、viewWillAppear 等控制视图声明周期,因为他继承于 UIResponder,所以可以响应和处理用户事件。View、 Control 、 Layer 对象 :view可以通过 addSubView 和 removeFromSuperView等方法管理视图层次结构,使用 layoutSubviews、layoutIfNeeded 和 setNeedsLayout 等方法布局 view的层次结构,当系统提供的 view无法满足需要,可以重写 drawRect 方法或者通过 layer属性构造更加复杂的图形和动画。              iOS中布局相关方法    - (CGSize)sizeThatFits:(CGSize)size;   - (void)sizeToFit;  sizeToFit 自动调用 sizeThatFits 方法,不能在子类中重写 sizeToFit ----------------------------------------------------------------------    - (void)layoutSubViews;   - (void)layoutIfNeeded;   - (void)setNeedsLayout    layoutSubviews 在以下情况下会被调用 init初始化不会触发 layoutSubviews,但是 initWithFrame 进行初始化会被调用,当 rect 的值不为 CGRectZero 时,也会触发。addSubView会触发 layoutSubviews设置 view的 frame 会触发 layoutSubviews滚动 ScrollView 时会触发 layoutSubviews旋转 Screen 会触发 父view 上的 layoutSubviews改变一个 view的大小也会触发父view的 layoutSubviews,所以重写这个方法要调用 [super layoutSubViews] setNeedsLayout 标记需要刷新布局的控件,下一次运行循环的时候会刷新布局,异步调用 layoutIfNeeded——>layoutIfNeeded,立即刷新布局——>layoutSubViews --------------------------------------------------------------------- - (void)setNeedsDisplay;- (void)drawRect; setNeedsDisplay 方法,标记为重绘,异步调用 drawRect 方法 drawRect 方法,重写此方法,执行重绘任务 这个两个方法都没没有递归,对 subViews 也不负责,只负责自己。 ---------------------------------------------------------------------

layoutSubviews对subviews重新布局

layoutSubviews方法调用先于drawRect

setNeedsLayout在receiver标上一个需要被重新布局的标记,在系统runloop的下一个周期自动调用layoutSubviews

layoutIfNeeded方法如其名,UIKit会判断该receiver是否需要layout.根据Apple官方文档,layoutIfNeeded方法应该是这样的

layoutIfNeeded遍历的不是superview链,应该是subviews链

drawRect是对receiver的重绘,能获得context

setNeedDisplay在receiver标上一个需要被重新绘图的标记,在下一个draw周期自动重绘,iphone device的刷新频率是60hz,也就是1/60秒后重绘

关键词:
相关文章
山西拟确认17 座煤矿为二级安全生产标准化管理体系煤矿 观速讯

山西拟确认17 座煤矿为二级安全生产标准化管理体

  山西省应急管理厅1月3日消息,按照国家煤矿安监局《煤矿安全生产标准化管理体系考核定级办法(试行)》和《煤矿安全生产标准化管理体系基更多

2023-01-05 10:10:12
世界观察:统计局:12月下旬全国煤炭价格各有涨跌

世界观察:统计局:12月下旬全国煤炭价格各有涨跌

  国家统计局1月4日公布的数据显示,12月下旬全国煤炭价格各有涨跌。各煤种具体价格变化情况如下:  无烟煤(洗中块,挥发份≤8%)价格2更多

2023-01-05 10:12:50
国家能源局核准新疆三个煤矿项目 产能合计600万吨/年

国家能源局核准新疆三个煤矿项目 产能合计600万

  近日,国家能源局核准新疆地区三个煤矿项目。  一是阿艾矿区北山中部150万吨年煤矿,项目建设单位为开滦库车高科能源有限公司,建设地点更多

2023-01-05 09:54:26
山西省应急管理厅为30 座煤矿(企业)颁发安全生产许可证|天天热讯

山西省应急管理厅为30 座煤矿(企业)颁发安全生

山西省应急管理厅关于颁发煤矿(企业)安全生产许可证的公告根据有关规定,经研究决定为山西煤炭进出口集团左权鑫顺煤业有限公司公司等30座煤更多

2023-01-05 10:08:08
保供进行时!这些能源企业多措并举保障人民温暖过冬

保供进行时!这些能源企业多措并举保障人民温暖过

  请各岗位人注意,各控制人员准备,准备开机生产!1月1日一大早,在国家能源集团神东煤炭上湾煤矿综采一队,随着工作人员一声指令,智能采更多

2023-01-05 10:10:17
天天热讯:新疆最大煤炭产销企业2022年煤炭销量达8005万吨

天天热讯:新疆最大煤炭产销企业2022年煤炭销量达8

  截至2022年12月31日,新疆最大煤炭产销企业——国家能源集团新疆能源有限责任公司2022年累计完成煤炭销量8005万吨,实现新突破。  2022更多

2023-01-05 09:02:49
12月下旬全国流通市场钢价涨跌互现|每日速读

12月下旬全国流通市场钢价涨跌互现|每日速读

  统计局最新数据显示,12月下旬,全国流通市场钢材价格涨跌互现。具体如下:  螺纹钢(Φ16-25mm,HRB400)价格为39926元吨,较上期(更多

2023-01-05 09:16:39
2022年瓦日铁路货运量达到1.03亿吨-百事通

2022年瓦日铁路货运量达到1.03亿吨-百事通

  3日从中国铁路太原局集团有限公司获悉,2022年,西煤东运大通道瓦日铁路货运量达到103亿吨,我国再增一条年运量过亿吨能源运输通道。  更多

2023-01-05 08:53:38
2022年鄂尔多斯煤炭销量首次突破8亿吨-天天速读

2022年鄂尔多斯煤炭销量首次突破8亿吨-天天速读

  内蒙古鄂尔多斯市能源局消息,2022年鄂尔多斯市煤炭销量预计达836亿吨,占全国五分之一,同比增加116亿吨,增幅达15%。  同时,鄂尔多斯更多

2023-01-04 10:12:22
辽宁省公布首批重要矿产资源矿产地68个-环球信息

辽宁省公布首批重要矿产资源矿产地68个-环球信息

  按照《辽宁省矿产资源总体规划(2021-2025年)》和相关标准,为加强全省重要矿产资源矿产地管理,日前,辽宁省自然资源厅组织有关单位和技更多

2023-01-04 10:13:19