码迷,mamicode.com
首页 > 移动开发 > 详细

iOS viewDidLayoutSubviews,viewdidload

时间:2015-11-18 16:30:20      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

由于种种原因,最近才开始真正在新项目中使用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

 

iOS viewDidLayoutSubviews,viewdidload

标签:

原文地址:http://www.cnblogs.com/itlover2013/p/4974485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!