我有一个自定义UIViewController
子类,我想覆盖loadView
方法。我遇到了问题,我需要self.view
的大小才能将其添加到其父级(UIViewControllerWrapperView
)。如何获得UIViewControllerWrapperView
将添加到view
的大小?
如果这不是常用的方法,那么我该怎样做才能手动确定我的视图的未来大小(而不是依赖于自动调整大小)?
编辑:
此外,这个UIViewControllerWrapperView
何时创建并调整大小?
答案 0 :(得分:1)
似乎我想要的是当前的SDK可能性,除了尝试自己计算屏幕上的空间。
我通过更清晰地设置我的观点的自动调整掩码解决了我的问题。
编辑:事实证明我可以在-(void)viewWillAppear:(BOOL)animated
确定我需要的尺寸。
答案 1 :(得分:0)
如果要覆盖视图控制器的-loadView方法,则需要在那里创建整个视图层次结构。
编辑:我之前曾建议拨打[super loadView]
,但我注意到文档说没有这样做。
答案 2 :(得分:0)
根据View Controller Programming Guide:
如果未从故事板加载视图控制器,请创建一个 特定于视图控制器的自定义初始化方法。 此方法应调用超类的init方法然后执行 任何特定于类的初始化。
这似乎表明子视图控制器应该通过自定义初始化程序传递父视图大小信息。
答案 3 :(得分:0)
处理当前视图(或视图控制器)大小的正确方法不用担心,只需使用AutoLayout或(旧方式)自动调整大小的掩码就可以在此视图中自然地进行布局。
在某些时候,您当然可以找出自己的尺寸,但是您应该尝试重做您的设计,以便您的布局都是相对的。而不是说“我的宽度是320,所以这个子视图应该有宽度280,每边20像素”,你可以使用AutoLayout有效地说“使子视图在左右两侧有一个20 px缓冲区,并占据任何宽度保持”。等。