Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIViewController或UINavigationController是否设置其大小';你的观点是什么?_Iphone_Ios_Uiview_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Iphone UIViewController或UINavigationController是否设置其大小';你的观点是什么?

Iphone UIViewController或UINavigationController是否设置其大小';你的观点是什么?,iphone,ios,uiview,uiviewcontroller,uinavigationcontroller,Iphone,Ios,Uiview,Uiviewcontroller,Uinavigationcontroller,我有几个UIViewController,通过UINavigationController加载,在这里我覆盖loadView,并设置要显示的自定义视图。我在设置一些子视图的框架时遇到问题,可能还有视图本身。我认为UINavigationController或UIViewController能够在显示时强制其视图填充屏幕 我想知道是否和/或何时设置视图的大小。如果发生这种情况,是设置视图的框架,还是以另一种方式进行 谢谢 更新: 我刚刚注意到,在处理此问题时,我使用此loadView方法制作了一个

我有几个UIViewController,通过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];
}

我得到一个红色视图占据了整个屏幕,除了状态栏和标题。我的视图何时调整大小以填充屏幕?创建视图时应该使用什么大小?

UIViewController的框架空间变得更小,因为
UINavigationController
通过添加大小为44.0f的
UINavigationBar
来操纵视图


它会被调整大小,因为您将视图替换为
self.view=view
如果您使用
addSubview:
,它将保持原来的大小。logancautrell解释了时间和原因。

UINavigationController将在按下时自动调整ViewController视图的大小。从文档中:

pushViewController:已设置动画:

viewController参数中的对象将成为导航堆栈上的俯视图控制器。按下视图控制器将显示其管理的视图。该视图的显示方式由动画参数决定。如果已设置动画的参数为“是”,则视图已设置动画到位置;否则,视图仅显示在适当的位置。视图在显示之前会自动调整大小,以适应导航栏和工具栏(如果存在)之间的大小


如果您想显示一个较小的视图,那么您必须创建一个容器,并将其作为VC视图的子视图,手动设置大小。根据您创建视图的方式,可能必须正确设置自动调整大小掩码。

谢谢您的澄清。当在视图控制器loadView中加载我的视图时,当通过UINavigationController推送时,我是否只需要将帧设置为CGRectMake(0.0、0.0、320.0、416.0)?如中所示,我不需要在UINavigationBar或状态栏的帧原点y坐标中进行补偿?导航栏的底部成为ViewController的新X、y原点,您只需要补偿调整后的高度。确保尺寸使用NSLog(@“w x h=%f x%f”,self.view.frame.size.width,self.view.frame.size.height)谢谢,这为我澄清了这一点。我仍然在想什么时候会改变看法。因为即使我在loadView中设置了不正确的大小,它也会被更改为正确的大小。我会接受你的回答,因为这会让我兴奋。再次感谢。它在这里调整了大小:self.view=view;如果改为使用:[self.view addSubview:view];它不会重新调整Hanks,这一定是我读过一次的文档,但忘记了我读过的内容/位置。有没有办法在推送操作后强制导航控制器重新调整其子视图控制器的大小?我正在更改导航控制器的高度,但由于某些原因,它不会自动调整其内容。我还发现一个问题,即在过渡期间旋转设备时,导航控制器没有调整其子视图控制器的大小。