文档章节

Sizing views inside a container view controller

Michael-W
 Michael-W
发布于 2014/06/16 15:44
字数 330
阅读 50
收藏 0

    今天在用container view controller时,发现我添加的三个sub view controller大小不对,本来应该是左中右三屏的。研究后发现是设置frame无效。经搜索发现是自己对View Controller Lifecycle还是不理解(罪过啊。。)。将设置sub viewcontroller的frame的代码移到viewDidAppear or viewWillLayoutSubviews等方法中即可。概述如下:

"1. 在viewWillAppear之前,无论横屏还是竖屏,view的frame和bounds都是按竖屏方式计算的;2. 在viewWillAppear之前,navigationController(而非父view,实际上这个vc的superview是 navigationController的view的一个subview)的导航条并没有计算在frame和bounds中,但电池条的宽度是一直计算 了的;3. 在转屏时,触发的是viewWillLayoutSubview及viewDidLayoutSubview(data not shown)。
由此结论,我们继续往下想,如果我们要改变 self.view的frame值,我们应当在哪个方法中修改呢?很容易想到的是,init和viewDidLoad中是不行的,实践证明,在 viewWillAppear中也是不行的,要在viewDidAppear/viewWillLayoutSubviews /viewDidLayoutSubviews方法中修改才能产生效果。"

具体原因详细阅读以下链接中的文章即可:

http://blog.sina.com.cn/s/blog_76264a170101e5lb.html

http://www.samirchen.com/view-controller-lifecycle-in-ios/

http://stackoverflow.com/questions/13079172/unable-to-set-frame-correctly-before-viewdidappear

http://stackoverflow.com/questions/9539676/uiviewcontroller-returns-invalid-frame

http://stackoverflow.com/questions/11384696/view-controller-frame-size-in-child-controller

http://quke.org/post/ios-viewcontroller-lifecycle.html

© 著作权归作者所有

共有 人打赏支持
Michael-W
粉丝 8
博文 46
码字总数 12575
作品 0
深圳
项目经理
私信 提问
Beginning Adaptive Layout Tutorial

Update 19th November 2014: Updated for Xcode 6.1. Learn how to make your apps use Adaptive Layout in iOS 8! Note from Ray: This is an abbreviated version of a chapter from iOS 8......

MrLovelyCbb
2014/12/01
0
0
iOS Child Controller

最近碰到一个问题是发现当移除一个的时候,被调用,但是却没有被调用,导致注册的通知没有被注销,进而引发一系列的错误调用。趁此机会理清了一下有关"Child View Controller"的一些概念以及...

雨_树
2017/08/15
0
0
Spring MVC 返回html等自定义后缀名 页面404错误解决

First the DispatcherServlet is invoked by the Servlet Container. The DispatcherServlet finds a mapping which maps to the home method of your Controller and the home method retur......

omm881
2014/06/07
0
0
backbone | chaplin | coffee tutotial实现

backbone | chaplin | coffee tutotial实现 前端MVC框架很多,angular处理DOM的方式比较特别,试用了下感觉不太顺手,backbone之前学习过一次,由于作者文档写的太烂,遇到各种坑放了一段时间...

duoduo3_69
2014/04/18
0
1
【IOS】自动旋转与调整大小xcode5之前&xcode5之后

//4.5版本开始启用Autolayout了,可以在file inspector 里面 interface Builder Document栏下取消“Use Autolayout”的钩选。 苹果的产品iPad和iPhone都是支持自动旋转的,因而我们写的程序也...

呢喃的猫咪
2013/08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安装mysql8.0.11以及修改root密码、连接navicat for mysql。

安装mysql8.0.11以及修改root密码、连接navicat for mysql。   最近在学习node.js,少不得要跟数据库打交道,于是打算安装一个数据库软件,在mongedb和mysql之间选择了mysql。作为一个数据...

linjin200
14分钟前
1
0
前嗅ForeSpider教程:创建模板

今天,小编为大家带来的教程是:如何在前嗅ForeSpider中创建模板。主要内容有:模板的概念,模板的配置方式,模板的高级选项,具体内容如下: 一,模板的概念 模板列表的层级相当于网页跳转的...

forespider
16分钟前
1
0
OSChina 周三乱弹 —— 除了电脑,别人都很开心

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲,《三亩水田》- 蚂蚁先生 《三亩水田》- 蚂蚁先生 手机党少年们想听歌,请使劲儿戳(这里) @uknow8692 :感谢失业,让我...

小小编辑
18分钟前
198
13
django数据库自动重连

简介 Django数据库连接超过wait_timeout导致连接丢失时自动重新连接数据库 https://github.com/zhanghaofei/django-db-reconnect 安装 pip install django_db_reconnect 注意仅支持pymysql...

张豪飞
22分钟前
0
0
PostMan 工具使用使用,以及不同请求对应的ContentType 的设置

https://www.jianshu.com/p/d230d27b44fe

kuchawyz
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部