layoutSubviews 调用时机

简介: layoutSubviews 调用时机

声明.剽窃自谷歌,看后瞬间理解深刻加深了原文地址

layoutSubviews 调用时机

一般baidu出来的答案如下,然而说明并不够透彻,在此补充说明:

1、init初始化不会触发layoutSubviews

2、addSubview会触发layoutSubviews

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

4、滚动一个UIScrollView会触发layoutSubviews

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

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

首先:layoutSubviews 字面意思是: 布局子控件,也就是说改变子控件会调用父类该方法;

1、init初始化不会触发layoutSubviews,

这点确实不会调用;

2、addSubview会触发layoutSubviews,

如果添加的子控件没有Frame,不会调用;

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

还有一个前提是该View 已经被添加到父控件, 此时View和其父控件的layoutSubviews都会调用;

也就包含了6 的情况

4、滚动一个UIScrollView会触发layoutSubviews ,因滚动UIScrollView,其子控件肯定对应会刷新,也就肯定会被调用;

这点会调用;

5、旋转Screen会触发控制器对应UIView上的layoutSubviews事件

做一点更正;

总结:改变子控件就会调用父类的方法;

参考文档这样说:

大概意思是:如果子控件的布局无法满足需求,需要对子控件更改布局时可以重写layoutSubviews 直接改变之空间的Frame; 如果需要强制更新子控件的布局, 不能直接调用layoutSubviews,应该调用setNeedsLayout;

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 thesetNeedsLayoutmethod instead to do so prior to the next drawing update. If you want to update the layout of your views immediately, call thelayoutIfNeededmethod.


逻辑教育视频合集:

链接:https://pan.baidu.com/s/1kqiOB09jXG4aGXFXWKguZw 提取码:j9Zq

如果被和谐联系:2395660048


相关文章
|
存储
13-iOS消息转发机制以及常用场景
13-iOS消息转发机制以及常用场景
345 0
|
Web App开发 iOS开发
无法安装此app,因为无法验证其完整性 ,解决方案
无法安装此app,因为无法验证其完整性 ,解决方案
|
前端开发 关系型数据库 MySQL
开源云真机平台-Sonic应用实践
Sonic,一站式开源分布式集群云真机测试平台,致力服务于中小企业的客户端UI测试。 Sonic当前的愿景是能帮助中小型企业解决在客户端自动化或远控方面缺少工具和测试手段的问题。
开源云真机平台-Sonic应用实践
|
CDN
Cocoapods报错 [!] CDN: trunk URL couldn't be downloaded: 解决方法
Cocoapods报错 [!] CDN: trunk URL couldn't be downloaded: 解决方法
2086 0
|
4月前
|
人工智能 前端开发 数据可视化
还在手写HTML?2025最新在线生成器推荐,自动美化+实时预览,效率翻倍
在互联网快速发展的今天,李响团队指出,传统手写HTML已难满足高效开发需求。通过评测Lynx AI、CodeWeaver等主流工具,总结其在效率、质量与学习上的优势,并提供按技术基础、项目需求选型的实用建议,助力开发者提升生产力。
 还在手写HTML?2025最新在线生成器推荐,自动美化+实时预览,效率翻倍
|
算法 搜索推荐 Java
二分查找算法详解及实现
二分查找算法详解及实现
476 2
|
Java 测试技术 数据库连接
Spring Boot中的嵌入式数据库使用
Spring Boot中的嵌入式数据库使用
|
vr&ar Swift
大师学SwiftUI第9章Part 1 - 异步并发之Task、Async、Await和错误
苹果系统借助现代处理器的多核可同步执行多条代码,提升同一时间内程序所能执行的任务。例如,一段代码从网上下载文件,另一段代码可以在屏幕上显示进度。此时,我们不能等待第一个执行完后再执行第二个,而必须要同步执行这两个任务。
654 0
|
网络协议 应用服务中间件 网络安全
NGINX 关键性能指标
NGINX 关键性能指标
|
分布式计算 搜索推荐 算法
大数据Spark MLlib推荐系统
大数据Spark MLlib推荐系统
428 2