• When does layoutSubviews get called?


    转自:http://blog.logichigh.com/2011/03/16/when-does-layoutsubviews-get-called/

    It’s important to optimize any UIView layoutSubviews method you create, as it can be frequently called, and has the potential for creating recursion (triggering a setNeedsLayout from layoutSubviews can create a loop that will grossly affect your apps performance). Layout subviews is called once per run loop on any view that has had setNeedsLayout or setNeedsDisplayWithRect: called on it. So in addition to any time you manually call these methods, it can be useful to know when the UI framework calls setNeedsLayout/setNeedsDisplay as this will trigger layoutSubviews.

    For this purpose, I will define a few view relationships:

    • View1 – UIView class, root view for examples
    • View1.1 – UIScrollView class, subview of View1
    • View1.1.1 – UIView class, subview of View1.1 (No autoresize mask)
    • View1.1.2 – UIView class, another subview of View1.1 (Autoresize mask – flexible width)

    I then ran the following tests.  An X means the view was layed out

    From this I surmise the following:

    • init does not cause layoutSubviews to be called (duh)
    • addSubview causes layoutSubviews to be called on the view being added, the view it’s being added to (target view), and all the subviews of the target view
    • setFrame intelligently calls layoutSubviews on the view having it’s frame set only if the size parameter of the frame is different
    • scrolling a UIScrollView causes layoutSubviews to be called on the scrollView, and it’s superview
    • rotating a device only calls layoutSubview on the parent view (the responding viewControllers primary view)
    • removeFromSuperview – layoutSubviews is called on superview only (not show in table)
  • 相关阅读:
    jupyter notebook 在mac OS上的安装
    spring cloud 学习(11)
    spring cloud 学习(10)
    spring-boot 速成(12)
    spring cloud 学习(9)
    java一些常用并发工具示例
    python语法相关---1、
    python语法相关---2、
    Python人工智能参考---感知器(神经元)
    网站部署测试---1、apache如何部署网站
  • 原文地址:https://www.cnblogs.com/xjshi/p/4610430.html
Copyright © 2020-2023  润新知