zoukankan      html  css  js  c++  java
  • iOS viewDidLayoutSubviews,viewdidload

    由于种种原因,最近才开始真正在新项目中使用autolayout,使用过程中虽说是比较顺畅,但是也遇到了一些麻烦,比如:

    我使用的XIB默认是4寸屏幕,我再XIB中增加一个viewA,宽度为320,约束为SuperView等宽。

    然后我用4寸模拟器,代码跑起来,在ViewDidload中取出viewA的宽度,发现宽度为320,SuperView(self.view)的宽度也为320.

    这个结果没有错误。

    但是我用5.5寸的模拟器,代码跑起来,在ViewDidLoad取出viewA的宽度发现还是320,SuperView(self.view)的宽度也为320.

    此时就不对了

    这会导致在ViewDidLoad中初始化一些控件时,导致这些控件的frame的大小是在XIB默认的大小,而不是我们增加约束后希望的大小。

    笔者这个问题纠结了很久也百度Google了很久,也不知道是关键字没有正确还是什么原因,寻求无果,最后还是请教一个大神才豁然开朗。

    原来在iOS5.0开始就有另外一个生命周期函数ViewDidLayoutSubViews这个方法基本可以代替ViewDidload使用,只不过差别在于前者是约束后,后者是约束前。

    当让聪明的读者肯定会想到有Did肯定也会有Will,即ViewWillLayoutSubViews.

    http://www.bkjia.com/Androidjc/938015.html

  • 相关阅读:
    Mybatis全局配置文件
    Mybatis简介及入门
    数据库小结(1)
    Java提高——Java的内存回收(2)
    关于引入文件错误
    Java提高——JUC原子类
    swagger
    Java提高——多线程(五)生产消费者问题
    Java提高——多线程(四)等待、唤醒、线程中断、优先级和守护线程
    战略与战术
  • 原文地址:https://www.cnblogs.com/itlover2013/p/4974485.html
Copyright © 2011-2022 走看看