在加载nibfromfile后旋转设备时不自动调整大小

时间:2011-08-10 08:55:47

标签: objective-c

我有以下问题:

我得到了一些在用户登录时调用的代码。代码必须调用另一个视图控制器并且必须显示另一个视图。为了显示新视图,我得到了以下代码:

[scrollView removeFromSuperview];

Form1 *formcontroller1 = [[Form1 alloc] initWithNibName:@"Form1" bundle:[NSBundle     mainBundle]];

[self.view setAutoresizesSubviews:YES];

[self.view addSubview:formcontroller1.view];

[scrollView release];

问题是,当加载另一个视图并且我旋转设备时,新笔尖的视图没有正确调整大小。

编辑:

我没有解雇当前的viewcontroller所以仍然存在一些属性。我做的是这个:

[scrollView removeFromSuperview];

[self dismissModalViewControllerAnimated:YES];

Form1 *formcontroller = [[Form1 alloc] init];

[self presentModalViewController:formcontroller animated:YES];

[scrollView release];

1 个答案:

答案 0 :(得分:1)

您应该在Interface Builder中检查nib视图的自动调整属性...

它应该如图所示:

enter image description here

中间的箭头变暗,但仍处于活动状态。这是设置自动调整大小的地方。您可以尝试通过在控制器viewDidLoad方法中分配来以编程方式设置该属性:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

您还应该确保您的视图及其超级视图都选中了“自动调整大小视图”按钮(在IB中的检查器的第一个窗格中)

老答案:

如何定义Form1 – shouldAutorotateToInterfaceOrientation:

  

默认情况下,此方法仅为UIInterfaceOrientationPortrait方向返回YES。如果视图控制器支持其他方向,则覆盖此方法并为其支持的所有方向返回YES。

     

此方法的实现应该根据interfaceOrientation参数中的值返回YES或NO。不要尝试获取interfaceOrientation属性的值或检查UIDevice类报告的方向值。您的视图控制器要么能够支持给定的方向,要么不支持。

E.g:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {   
   return YES;
}

支持所有方向。