##前言 在日常的开发工作中,对于搭建UI界面我一直都是手撕代码,不喜欢用Storyboard,(其实是不太会)。对于更新约束一直是似懂非懂,就知道把新的约束写在updateConstraints里面,并调用setNeedsUpdateConstraintsupdateConstraintsIfNeededlayoutIfNeeded就好,如果添加动画,就把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相关推荐

  1. 25、UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

    layoutSubviews总结 ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ------- - (v ...

  2. 从 setNeedsLayout 说起

    本文从 setNeedsLayout 这个方法说起,分享与其相关的 UIKit 视图交互.使用场景等内容. UIKit 为 UIView 提供了这些方法来进行视图的更新与重绘: public func ...

  3. iOS-笔试面试总结

    面试题目涉及: (1) block的本质 2017年5月iOS招人心得(附面试题) 2018年 iOS 面试心得 出一套 iOS 高级面试题 iOS 高级面试题–答案 iOS----BAT网易笔试&a ...

  4. ios开发之UIView和UIViewController

    UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...

  5. iOSSharing #9 | 2019-05-19

    目录 1. setNeedsLayout.layoutIfNeeded与layoutSubviews区别? 2. UIView与CALayer的区别? 3. loadView什么时候被调用?它有什么作 ...

  6. swift 之SnapKit 动画

    这个问题纠结了我挺长时间的.一直以为把约束直接添加到动画里面就可以了.但是并没那么简单.-.-其实还是挺简 class ViewController: UIViewController {@IBOut ...

  7. Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度

    核心 : /// 获取 子控件高度func sizeHeaderToFit(view:UIView) {view.setNeedsLayout()view.layoutIfNeeded()let wi ...

  8. [基础]iOS 可视化编程(全系列)

    为什么80%的码农都做不了架构师?>>>    所有文章目录:http://my.oschina.net/ChenTF/blog/677112 本篇文章地址: http://my.o ...

  9. AutoLayout 浅析动画

    1.AutoLayout相关的几个易混淆的方法 setNeedsLayout layoutIfNeeded layoutSubViews setNeedsUpdateConstraints updat ...

最新文章

  1. oracle enterprise linux 5.7,Red Hat Enterprise Linux 5.7 安装Oracle数据库
  2. Python pygame
  3. html5视频播放怎么结束,html5设置或返回音频/视频是否应该在结束时再次播放的属性loop...
  4. PPRevealSideViewController
  5. JAVA的嵌入式脚本开发(中)
  6. apache fop_Apache FOP与Eclipse和OSGi的集成
  7. 【转】Mongodb 学习笔记
  8. 基于业务和平台理解数字营销概念
  9. VMware中让虚拟机支持虚拟化
  10. 为什么图片保存类型360 se html document,360安全浏览器为什么图片不显示保存
  11. 基于Astar算法实现飞行轨迹的三维规划附Matlab代码
  12. linux查看各端口号,端口如何查看linux的端口号
  13. 线元法输入曲线要素_交点法、线元法
  14. 热浪寒浪统计在python上的实现
  15. VMware连接不上网
  16. OA系统的功能和作用是什么(OA系统百科)
  17. 【逆向工程】在PE结构空白区段插入代码
  18. android手机没电怎么恢复电量,Android手机电池电量剩下通知
  19. 详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)
  20. 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题...

热门文章

  1. php操作elasticsearch
  2. Redis 订阅与发布
  3. HDU 3400 Line belt (三分)
  4. 工作六年的前端开发在想什么
  5. 如何使用MongoDB+Springboot实现分布式ID?
  6. V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)...
  7. lintcode :sort letters by case字符大小写排序
  8. 使用HttpURLConnection+AsyncTask访问webservice接口(返回json字符串)
  9. [转载] AUML——FIPA Modeling Technical Committee
  10. 解决WEB页面上焦点控制一法