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


目录
打赏
0
0
0
0
367
分享
相关文章
|
10月前
|
java线程之异步回调
java线程之异步回调
|
10月前
ContentProvider的执行时机
ContentProvider的执行时机
56 0
异步装载回调操作
异步装载回调操作
PicassoProvider初始化时机
在学习Picasso源码的过程中,发现了Picasso对象的初始化不需要传入上下文对象了
初识CUDAGPU线程的调用
初识CUDAGPU线程的调用
150 0
C#调用Java方法(详细实例)
原文:C#调用Java方法(详细实例) C#可以直接引用C++的DLL和转换JAVA写好的程序。最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用C++的例子网上很多,以一个C++的具体方法为例。
3368 0
类加载时机与过程 asdfsadfasdfsa 09-19 268
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/79612719  通过之前的介绍可知,类加载过程共有5个步骤,分别是:加载、验证、准备、解析、初始化。
1227 0
onAttachedToWindow和onDetachedFromWindow调用时机源码解析
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 先上测试代码: MyView.java import android.
1738 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等