问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

layoutSubviews的作用和调用机制 iOS

发布网友 发布时间:2022-12-17 04:40

我来回答

1个回答

热心网友 时间:2023-09-14 02:33

首先我们查看下layoutSubviews如何调用

- (void)layoutSubviews;    // override point. called by layoutIfNeeded automatically. As of iOS 6.0, when constraints-based layout is used the base implementation applies the constraints-based layout, otherwise it does nothing.

简单的说就是你如果想调用此方法.不要直接调用,需要调用setNeedsLayout方法来刷新布局!

看看官方怎么说吧!

The default implementation of this method does nothing on iOS 5.1 and earlier. Otherwise, the default implementation uses any constraints you have set to determine the size and position of any subviews.

Subclasses can override this method as needed to perform more precise layout of their subviews. You should override this method only if the autoresizing and constraint-based behaviors of the subviews do not offer the behavior you want. You can use your implementation to set the frame rectangles of your subviews directly.

You should not call this method directly. If you want to force a layout update, call the setNeedsLayout method instead to do so prior to the next drawing update. If you want to update the layout of your views immediately, call the layoutIfNeeded method.

我们直接看说重点(本人英文也是渣渣,就不翻译了,也不会翻译哈:-D):

不要直接调用layoutSubviews方法。如果你想强制更新布局,你可以调用setNeedsLayout方法;如果你想立即数显你的views,你需要调用layoutIfNeeded方法。

那么问题来了,那layoutSubviews有毛用呀!你这样想就得好好看看这篇文章了!

我们不是经常要对subviews布局么,更新啥的,layoutSubviews就是对subviews重新布局的,常常需要根据需求来更新对应的subview大小,这样才能显示完美,不会挨批了!

那么我们要在啥时候调用layoutSubviews,layoutSubviews什么时候会被调用呢?

1、直接调用setLayoutSubviews,setNeedsLayout

2、init初始化不会触发layoutSubviews

3、addSubview会触发layoutSubviews

4、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

5、滚动一个UIScrollView会触发layoutSubviews

6、旋转Screen会触发父UIView上的layoutSubviews事件

7、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

这样我们根据不同场景来触发layoutSubviews.

当view的frame为zero的时候 addSubview不会触发layoutSubviews

layoutSubviews我理解的比较浅,希望大家可以指出文章的错误指出,也希望可以跟大家探讨如何更加深入 调用layoutSubviews的机制
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
胶原蛋白线双眼皮是不是永久性 双眼皮埋线是蛋白质还是尼龙绳-双眼皮埋线蛋白线多久能吸收 人体输液的“港口”完全植入式输液港 双眼皮宽变窄修复的方法 同心保家庭重疾险靠不靠谱?便宜吗? 做完双眼皮一宽一窄怎么办 喝全脂奶粉对长高有没有什么好处? redmine中“选择一个项目..."下拉列表框中为什么只列出一个项目,我建... 南充市龙门中学实力现在怎样?他的奥赛班是重点班么? 感情中为什么总是不知足呢? 李政宰导演的*作《狩猎》受到网友好评,这部影片主要讲述的是什么故事? 狩猎讲的是什么 2021款奥迪a4l时尚型自动泊车怎么用? 买房的时候拿贷款找的中介,现在拿房产证还找他吗 有哪些简单易做的凉拌菜? 山岳巅茶业古树漫松熟茶怎么样 英科医疗属哪种概念股?英科医疗历史股票数据?英科医疗股票连续跌多久了? 空气质量按照空气质量指数大小可分为几级? 空气质量指数AQI你读懂了吗? s-star不锈钢餐具怎么样 ARCGIS中使用python。arcpy函数那么多,怎样找到要使用的函数? arcgis中modelbulider导出为python脚本后的脚本可以直接使用吗 基金卖出失败还参与交易吗 总数47分数45平均分怎么算 v-t图像的局限性。 电磁感应的问题:AB棒向右作匀速运动,下列三个图中,感应电动势和感应电流的变化(具体)谢谢! 2008年最好听的KTV歌曲 哪里可以下载到齐豫的清净法身佛?必须是MP3格式 歌词是毗卢遮那佛什么歌 质量部门是干什么的? 请问有质量部门吗 有的话质量检验员是属于质检部还是质量部 何时使用 layoutSubviews 方法 iOS viewDidLayoutSubviews 的调用 layoutSubviews何时调用的问题 来月经第七天同房会怀孕吗 月经期第7天,做爱会怀孕吗? 月经第七天同房会怀孕吗? 月经的第7天会不会怀孕 例假第7天可以会怀孕吗 没有文凭怎么提升自己 没有毕业证怎么证明学历 液相检测含量时带入哪个对照 有工作的如何偷生三胎,合同工生三胎单位怎么处置 国企员工生第三胎会被开除吗? 小叶紫檀的保养方法 小叶紫檀的保养方法介绍 二手车首付8万货款4万共多少 购买二手车贷款需要多少利息? 二手车贷款实息和银行复息的区别 属龙男人花心吗 十二生肖的爱情弱点 个人所得税中的工资薪金所得采用