Rya*_*yan 5 iphone uiviewcontroller uiview uinavigationcontroller ios
我有几个UIViewControllers,通过UINavigationController加载,我覆盖loadView,并设置一个自定义视图来显示.我在设置某些子视图的帧时遇到问题,也许是视图本身.我认为UINavigationController或UIViewController能够强制它的视图在显示时填充屏幕.
我想知道是否和/或何时设置了视图的大小.如果它正在发生,它是设置视图的框架,还是以另一种方式.
谢谢.
更新:我刚刚注意到,在解决这个问题时,我使用这个loadView方法创建了一个新的UINavigationController:
- (void)loadView
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 10.0f, 10.0f)];
[view setBackgroundColor:[UIColor redColor]];
self.view = view;
[view release];
}
Run Code Online (Sandbox Code Playgroud)
除了状态栏和标题之外,我得到一个占据整个屏幕的红色视图.我的视图什么时候调整大小以填满屏幕?在创建视图时我应该使用多大的尺寸?
UINavigationController将在推送时自动调整ViewController的视图大小.来自文档:
pushViewController:动画:
viewController参数中的对象成为导航堆栈上的顶视图控制器.推送视图控制器会导致显示其管理的视图.如何显示该视图由动画参数确定.如果动画参数为YES,则将视图设置为动画到位; 否则,视图只是显示在原位.在显示之前,视图会自动调整大小以适合导航栏和工具栏(如果存在).
如果要显示较小的视图,则必须创建容器并使其成为VC视图的子容器,并手动设置大小.可能必须正确设置自动调整大小的掩码,具体取决于您创建视图的方式.
的框架空间UIViewControllers
变得更小,因为通过添加大小为 44.0f 的UINavigationController
来操纵视图。UINavigationBar
它会调整大小,因为您将视图替换为“self.view = view;
如果您本来会使用它”,addSubview:
那么它会保持原始大小。logancautrell 解释了时间和原因。