• AutoLayout相关


    //Intrinsic Content Size 固有大小

    资料引用:

    下面这个讲了AutoLayout如何实现自动和使用传统的frame相结合

    http://www.cocoachina.com/industry/20140521/8498.html  

    1.从viewController 到 view

     首先我们看一下 使用了autoLayout的xib 是如何工作的 :

    我们开始: 

        ViewController * viewC = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];

            _window.rootViewController = viewC

    (下面是几个方法)

    - (void)viewDidLoad 

    -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    -(void)awakeFromNib

     -(void)updateViewConstraints

    -(void)layoutSubviews

     他们的调用顺序是什么呢?

     1.1首先对ViewController类发送alloc消息的时候分配了空间; 使用initWithNibName进行初始化的时候,去读取xib文件, xib被唤醒,调用awakeFromNib,此时还没有self的概念  这时候如果去调用self的话(e.g [self.view doSth])会实例化新的ViewController ,继续往后的话你会发现viewDIdload被调用两次,因为其实实例化了是两个不同的实例.

    1.2 将nib唤醒后调用

    -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

     并且返回初始化好的对象

    1.3 调用viewDidLoad 这时候会发现此时视图的frame 是xib中的frame 而非实际显示的frame 因为此时还没有通过约束进行布局

    1.4调用 

     -(void)updateViewConstraints 此时会通过约束进行frame的定制工作 

     1.5  上述工作完成后 调用视图的layoutSubviews

    -(void)layoutSubviews

    很明显在layoutSubviews 改变 视图frame的行为是不理智的因为 在layoutSubView 之前会读取约束把你设置的frame给干掉

  • 相关阅读:
    pandas 数据预处理实例演示
    pandas 包的基本使用
    Numpy 包的基础结构(下)
    Numpy 包的基础结构(上)
    Anaconda的基本使用
    黄金点游戏结果
    个人作业-Week2:案例分析
    结对项目-地铁出行路线规划程序(续)
    关于结对和团队组建
    关于个人博客和Github地址提交
  • 原文地址:https://www.cnblogs.com/jaj-angel/p/4102918.html
Copyright © 2020-2023  润新知