开发者

ViewController displaced vertically by 20px after modal is dismissed: iOS4 Only. Example code included

I hope someone can help... This issue has been discussed here and I have tried the solutions suggested but to no avail.

My problem is best illustrated using the example project which can be downloaded from this URL:

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

In the example project I have a main UIViewController with two buttons used to call two other UIViewControllers - one using presentModalViewController and the other using "addSubView" (using the AppDelegate). Individually both buttons and UIViewControllers work fine.

However, if I first call the modal viewcontroller, then dismiss it (using dismissModalViewControllerAnimated: YES) and then display the second (addSubView) UIViewController, then all elements and subviews in the second UIViewController (such a开发者_开发知识库s the button in the example) get displaced downwards vertically by 20 pixels. And the displacement happens with a momentary delay.

This issue does not happen with SDK 3.2 and below -- just iOS4.

Any help would be appreciated, especially with reference to the example project above.


add [aViewControllerTwo setWantsFullScreenLayout:YES]; to your - (void)flipToViewControllerTwo after ViewControllerTwo *aViewControllerTwo = [[ViewControllerTwo alloc] initWithNibName:@"ViewControllerTwo" bundle:[NSBundle mainBundle]];


In order to solve this you need to do the following with the view controller that appears shifted: add a frame, then set the position of this frame appropriately. Set this frame to the view of the 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];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜