您的位置:首页 > 移动开发 > IOS开发

iOS 创建带有Xib文件ViewController时 如何正确设置frame?

2016-02-25 16:13 686 查看
iOS开发中如何在创建ViewController时一起创建了Xib文件,这时我们在ViewDidLoad设置frame时 会出现获取到的view.frame是错误的,原因是:

调用方法viewDidLoad中,所有的控件的frame都是在当前storyboard中状态,然后viewdidlayoutsubview,应该是这个方法。这个会根据你在界面上所设定的约束开始调整各个view,如果没有约束,那应该还有automask什么的,会根据不同的设备尺寸自动调整frame。然后再是viewwillappeare方法。你可以自己去重写下viewWillLayoutSubviews,然后在里面看看self.view.frame会有什么变化。

下面说明下viewWillLayoutSubViews

- (void)viewWillLayoutSubviews{} 函数,对VC的调整可放在这里面


viewWillLayoutSubviews

view即将布局其Subviews。比如view的bounds改变了(例如状态栏从不显示到显示,视图方向变化),要调整Subviews的位置,在调整之前要做的一些工作就可以在该方法中实现。

viewDidLayoutSubviews

view已经布局其Subviews。比如view的bounds改变了(例如状态栏从不显示到显示,视图方向变化),已经调整Subviews的位置,在调整完成之后要做的一些工作就可以在该方法中实现。

layoutSubviews在以下情况下会被调用:

1、init初始化不会触发layoutSubviews

2、addSubview会触发layoutSubviews

3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

4、滚动一个UIScrollView会触发layoutSubviews

5、旋转Screen会触发父UIView上的layoutSubviews事件

6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: