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

  • 相关阅读:
    Markdown实用教程
    Python三次登陆
    Python猜年龄
    Pycharm用鼠标滚轮控制字体大小
    检测浏览器是否存在某个css或者js的api
    隐式绑定和显式绑定实现一个apply
    promise顺序执行的多种方案
    数据结构栈的定义和使用
    数据以及数据结构是数据处理的起点
    Vue的高阶组件(HOC)使用举例
  • 原文地址:https://www.cnblogs.com/itlover2013/p/4974485.html
Copyright © 2011-2022 走看看