模态解除后,ViewController垂直移位20px:仅限iOS4。包括示例代码

时间:2010-09-05 19:39:14

标签: iphone user-interface uinavigationcontroller ios4

我希望有人可以提供帮助......这个问题已经在这里讨论过了,我尝试了所提出的解决方案,但无济于事。

使用可以从此URL下载的示例项目最好地说明了我的问题:

http://www.hitsalive.com/tmp/VCTest.zip

在示例项目中,我有一个主UIViewController,其中有两个按钮用于调用另外两个UIViewControllers - 一个使用presentModalViewController,另一个使用“addSubView”(使用AppDelegate)。单独的两个按钮和UIViewController都可以正常工作。

但是,如果我先调用模态viewcontroller,然后将其关闭(使用dismissModalViewControllerAnimated: YES),然后显示第二个(addSubViewUIViewController,然后显示第二个中的所有元素和子视图UIViewController(例如示例中的按钮)垂直向下移动20个像素。并且位移发生在瞬间延迟。

SDK 3.2及更低版本不会发生此问题 - 只需iOS4。

任何帮助都将受到赞赏,特别是参考上面的示例项目。

2 个答案:

答案 0 :(得分:1)

[aViewControllerTwo setWantsFullScreenLayout:YES];

之后将- (void)flipToViewControllerTwo添加到ViewControllerTwo *aViewControllerTwo = [[ViewControllerTwo alloc] initWithNibName:@"ViewControllerTwo" bundle:[NSBundle mainBundle]];

答案 1 :(得分:1)

为了解决这个问题,您需要对显示为移位的视图控制器执行以下操作:添加框架,然后适当地设置此框架的位置。将此框架设置为ViewController的视图。

shiftedViewController* ShiftedViewController = [[ShiftedViewController alloc] init ];

CGRect theFrame = [shiftedViewController.view frame];
theFrame.origin.y = 20;
theFrame.origin.x=0;
[shiftedViewController.view setFrame: theFrame];



[self presentModalViewController:shiftedViewController          
                    animated:YES];