首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >什么时候调用layoutSubviews

什么时候调用layoutSubviews

作者头像
全栈程序员站长
发布于 2022-09-13 02:43:59
发布于 2022-09-13 02:43:59
51500
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

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

layoutSubviews作用

layoutSubviews是对subviews重新布局。比如,我们想更新子视图的位置的时候,可以通过调用layoutSubviews方法,既可以实现对子视图重新布局。

layoutSubviews默认是不做任何事情的,用到的时候,需要在自雷进行重写。

layoutSubviews以下情况会被调用

苹果官方文档已经强调,不能直接调用layoutSubviews对子视图进行重新布局。那么,layoutSubviews什么情况下会被调用呢?通过百度搜索,发现以下几种情况layoutSubviews会被调用。

  1. 直接调用setLayoutSubviews。(这个在上面苹果官方文档里有说明)
  2. addSubview的时候。
  3. 当view的frame发生改变的时候。
  4. 滑动UIScrollView的时候。
  5. 旋转Screen会触发父UIView上的layoutSubviews事件。
  6. 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。

我简单测试了一下,上面基本都会被调用。 注意:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
当view的fram的值为0的时候,`addSubview`也不会调用`layoutSubviews`的。

layoutSubviews方法在对自雷视图进行布局的时候非常方便。可以自己动手,深入理解layoutSubviews的调用机制。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159952.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
layoutSubviews解析
3、 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。
全栈程序员站长
2022/09/17
2670
layoutSubviews 详解
但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发
全栈程序员站长
2022/09/17
5690
layoutSubviews总结
可是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发
全栈程序员站长
2022/09/07
3230
谈谈 Autolayout
刚开始使用 Autolayout 遇到下面的警告人容易让人气馁,经常不知所措而放弃了使用 Autolayout。
s_在路上
2018/09/11
8040
谈谈 Autolayout
【iOS 开发】从 setNeedsLayout 说起
本文从 <code>setNeedsLayout</code> 这个方法说起,分享与其相关的 UIKit 视图交互、使用场景等内容。
KyXu
2019/04/11
8220
【iOS 开发】从 setNeedsLayout 说起
layoutSubviews的使用
1.直接调用layoutSubviews . 如:[self layoutSubviews];
全栈程序员站长
2022/09/13
5880
layoutSubviews和drawRect
子类可以重写此方法,因为需要更精确执行他们子视图的布局。只有当 autoresizing 和基于约束的行为的子视图不提供你想要的行为,应重写此方法。
全栈程序员站长
2022/09/13
2760
UIView - 生命周期
一般情况都是说UIViewController的生命周期,UIView的生命周期经常被忽视。
大壮
2019/02/22
2.9K0
layoutSubviews 调用
学习了一下UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。 宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。 \
全栈程序员站长
2022/09/17
6370
layoutSubviews 调用
setNeedsLayout和layoutIfNeeded看我就懂!
前言: 开发得跟view打交道,我们也经常看到苹果官方代码有layout方法的相关调用,但是大家可知道什么时候调用,什么时候需要吗?针对网上大部分资料讲得不够清晰,我决定用Demo来讲解 一、layoutSubviews 不能直接调用这个方法。强制刷新布局,调用 setNeedsLayout,如果想马上刷新界面,调用layoutIfNeeded 二、setNeedsLayout跟layoutIfNeded setNeedsLayout调整视图的子视图的布局时,在应用程序的主线程调用此方法。此方法记录
Dwyane
2018/05/22
2.9K0
iOS layout相关方法
这个方法,默认没有做任何事情,需要子类进行重写 。 系统在很多时候会去调用这个方法:
码客说
2019/10/22
1.2K0
关于Autolayout和Masonry自动布局的几个坑
自动布局 02 Mar 2016 Comments 前言 最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的视图,然后PageView的每一页是一个WebView,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。采用子控制器的原因是因为防止所有的逻辑代码都混在根控制器中,所以没有使用nicklockwood 的iCarousel 或SwipeView ,而是采用了之前一直在用的SCPageViewController 。 记录下自动布局中遇到的几个坑。 关于translatesAutoresizingMaskIntoConstraints
freesan44
2018/09/05
1.9K0
关于Autolayout和Masonry自动布局的几个坑
setNeedsDisplay看我就懂!
前言: setNeedsDisplay异步执行的。它会自动调用drawRect方法,这样可以拿到 UIGraphicsGetCurrentContext,就可以绘制了。而setNeedsLayout会默认调用layoutSubViews,处理子视图中的一些数据。 一、着手 我定义了一个UIView的子类,用于演示使用setNeedsDisplay,这个CircleView子类会在draw(_ rect: CGRect)方法内简单绘制一个圆,它有一个颜色属性,这是我们将要设置用来改变圆的颜色。 imp
Dwyane
2018/05/22
1.5K0
iOS 面试策略之系统框架-UIKit
本章节主要从视图、网络、设计模式几个方面考察开发者的开发水准,这是任何一个合格的 iOS 开发者都应该具备的基本素养。
会写bug的程序员
2021/05/13
1.7K0
iOS 面试策略之系统框架-UIKit
UIView layoutSubviews调用时机
1.init初始化的时候是不会触发的。但是调用initWiftFrame 并且参数fram不为0的时候会调用.换句话就是大小或者位置更改的时候调用。
编程那点事
2023/02/25
4870
关于Autolayout和Masonry自动布局的几个坑
最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的视图,然后PageView的每一页是一个WebView,同时中间有个可拖拽的控件,实现上下两个控制器视图的大小调整。采用子控制器的原因是因为防止所有的逻辑代码都混在根控制器中,所以没有使用nicklockwood的iCarousel或SwipeView,而是采用了之前一直在用的SCPageViewController。
freesan44
2018/09/05
1.7K0
关于Autolayout和Masonry自动布局的几个坑
android
目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的。而且有很多比较老的项目,本身就还在采用纯代码的方式进行开发。
xiangzhihong
2022/11/30
9590
ios约束
一、苹果的VFL语法约束 在使用约束之前,要先将没有设置frame的view添加到父视图上。如何将view设置为使用AutoLayout约束,取消默认约束。 UIView *red = [[UIView alloc]init]; red.backgroundColor = [UIColor magentaColor]; [self.view addSubview:red]; red.translatesAutoresizingMaskIntoConstraints = NO; //
谦谦君子修罗刀
2018/04/28
1.2K0
ios约束
iOS界面布局的核心以及TangramKit介绍
TangramKit是iOS系统下用Swift编写的第三方界面布局框架。他集成了iOS的AutoLayout和SizeClass以及Android的五大容器布局体系以及HTML/CSS中的float和flex-box的布局功能和思想,目的是为iOS开发人员提供一套功能强大、多屏幕灵活适配、简单易用的UI布局解决方案。Tangram的中文即七巧板的意思,取名的寓意表明这个布局库可以非常灵巧和简单的解决各种复杂界面布局问题。他的同胞框架:MyLayout是一套用objective-C实现的界面布局框架。二者的主体思想相同,实现原理则是通过扩展UIView的属性,以及重载layoutSubviews方法来完成界面布局,只不过在一些语法和属性设置上略有一些差异。可以这么说TangramKit是MyLayout布局库的一个升级版本。大家可以通过访问下面的github站点去下载最新的版本:
欧阳大哥2013
2018/08/22
2.4K0
iOS界面布局的核心以及TangramKit介绍
iOS-自定义View的封装
xy_ss
2023/11/22
4100
iOS-自定义View的封装
相关推荐
layoutSubviews解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验