从我的样品故事板本文概要显示了我的工作。
我有一个自容器视图控制器和通过嵌入塞格斯连接的两个内容视图控制器。
这里是故事板本身。
ZetaViewController有可能创造一些纲领性意见(内ZetaView,当然)。 当我为中心,他们似乎真的离市中心的这些程序创建的视图我注意到了。
ZetViewController通过检查self.view.bounds.size.height和self.view.bounds.size.width,做一些相应的计算为中心的东西。
当我将调试日志记录以ZetaViewController,我注意到self.view.bounds.size.height和self.view.bounds.size.width不得不尺寸等于ContainerView(768 X 1004),而不是 ZetaView(728 X 637)。 在IB的大小检查证实了这些值。
我创建了ZetaView的标签属性的独特的价值和记录它。 ZetaViewController.view 真的是ZetaView因为标签值证实了这一点。
那么发生了什么? 为什么会ZetaView,对故事板和大小检查更小的尺寸清晰显示,在运行时显示出它的属性的错误的价值观?
好吧,我要指出一个很好的职位,我发现:(更新) http://kevindew.me/post/18579273258/where-to-progmatically-lay-out-views-in-ios-5-and
我有一个可怕的时间添加阴影calayers到视图自动布局做了它的魔力了。 viewDidLoad中,viewWillLoad等没有一切正常布局。
viewWillLayoutSubviews叫了好几次,国家没有完全建立。 然而......在viewDidLayoutSubviews,最后一切都被设置为我的预期。
我的问题无关,故事板,塞格斯,或自定义的容器视图控制器VS内容视图控制器。 它与新的做可可自动布局在iOS 5中引入的功能。
我的问题在检查视图边界大小出现viewDidLoad
,而不是在viewWillLayoutSubviews
。 当时viewDidLoad
被调用时,视图控制器的观点并没有得到应有的大小呢。 当我提出这编程中心欣赏到代码viewWillLayoutSubviews
,它的工作如我所料。 我还是离开视图创建代码在viewDidLoad
,因为viewWillLayoutSubviews
反复称为布局的变化。
另请参阅查看编程指南适用于iOS节“调整您的浏览布局手动” 。