UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews
##前言 在日常的开发工作中,对于搭建UI界面我一直都是手撕代码,不喜欢用Storyboard,(其实是不太会)。对于更新约束一直是似懂非懂,就知道把新的约束写在updateConstraints
里面,并调用setNeedsUpdateConstraints
、updateConstraintsIfNeeded
和layoutIfNeeded
就好,如果添加动画,就把layoutIfNeeded
写在动画里,Masonry的Demo里就是这么做的。 但是我发现直接调用updateConstraints
就好了,如果不需要动画连layoutIfNeeded
都不用写,到底该怎么写我有点懵逼。归根结底就是对这几个方法和相关的方法没搞懂,所以有必要研究一下。
##正题 一.layoutSubviews
:默认没有做任何事情,需要子类进行重写 该方法会在以下情况下被调用: 1、用initWithFrame进行初始化且rect的值不为CGRectZero。 2、addSubview。 3、设置view的Frame且frame的值设置前后发生了变化。 4、滚动一个UIScrollView。 5、旋转Screen会触发父UIView上的layoutSubviews事件。 6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。 二. setNeedsLayout
:标记为需要重新布局 调用layoutSubviews,异步调用layoutIfNeeded刷新布局,不立即刷新。 三.layoutIfNeeded
: 如果有需要刷新的标记,立即调用layoutSubviews进行布局。 四.updateConstraints
: 更新约束,方法执行完之后会调用layoutSubviews。
##总结 更新约束就按照Masonry的Demo里的来,总木有错。。。。
转载于:https://juejin.im/post/5a32187451882554b83790cc
UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews相关推荐
- 25、UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
layoutSubviews总结 ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ------- - (v ...
- 从 setNeedsLayout 说起
本文从 setNeedsLayout 这个方法说起,分享与其相关的 UIKit 视图交互.使用场景等内容. UIKit 为 UIView 提供了这些方法来进行视图的更新与重绘: public func ...
- iOS-笔试面试总结
面试题目涉及: (1) block的本质 2017年5月iOS招人心得(附面试题) 2018年 iOS 面试心得 出一套 iOS 高级面试题 iOS 高级面试题–答案 iOS----BAT网易笔试&a ...
- ios开发之UIView和UIViewController
UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...
- iOSSharing #9 | 2019-05-19
目录 1. setNeedsLayout.layoutIfNeeded与layoutSubviews区别? 2. UIView与CALayer的区别? 3. loadView什么时候被调用?它有什么作 ...
- swift 之SnapKit 动画
这个问题纠结了我挺长时间的.一直以为把约束直接添加到动画里面就可以了.但是并没那么简单.-.-其实还是挺简 class ViewController: UIViewController {@IBOut ...
- Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度
核心 : /// 获取 子控件高度func sizeHeaderToFit(view:UIView) {view.setNeedsLayout()view.layoutIfNeeded()let wi ...
- [基础]iOS 可视化编程(全系列)
为什么80%的码农都做不了架构师?>>> 所有文章目录:http://my.oschina.net/ChenTF/blog/677112 本篇文章地址: http://my.o ...
- AutoLayout 浅析动画
1.AutoLayout相关的几个易混淆的方法 setNeedsLayout layoutIfNeeded layoutSubViews setNeedsUpdateConstraints updat ...
最新文章
- oracle enterprise linux 5.7,Red Hat Enterprise Linux 5.7 安装Oracle数据库
- Python pygame
- html5视频播放怎么结束,html5设置或返回音频/视频是否应该在结束时再次播放的属性loop...
- PPRevealSideViewController
- JAVA的嵌入式脚本开发(中)
- apache fop_Apache FOP与Eclipse和OSGi的集成
- 【转】Mongodb 学习笔记
- 基于业务和平台理解数字营销概念
- VMware中让虚拟机支持虚拟化
- 为什么图片保存类型360 se html document,360安全浏览器为什么图片不显示保存
- 基于Astar算法实现飞行轨迹的三维规划附Matlab代码
- linux查看各端口号,端口如何查看linux的端口号
- 线元法输入曲线要素_交点法、线元法
- 热浪寒浪统计在python上的实现
- VMware连接不上网
- OA系统的功能和作用是什么(OA系统百科)
- 【逆向工程】在PE结构空白区段插入代码
- android手机没电怎么恢复电量,Android手机电池电量剩下通知
- 详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)
- 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题...
热门文章
- php操作elasticsearch
- Redis 订阅与发布
- HDU 3400 Line belt (三分)
- 工作六年的前端开发在想什么
- 如何使用MongoDB+Springboot实现分布式ID?
- V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)...
- lintcode :sort letters by case字符大小写排序
- 使用HttpURLConnection+AsyncTask访问webservice接口(返回json字符串)
- [转载] AUML——FIPA Modeling Technical Committee
- 解决WEB页面上焦点控制一法