带iOS6的iPhone5上的presentViewController呈现460px宽而不是568px的横向视图

时间:2012-09-24 15:01:25

标签: iphone ios6

我希望有人可以提供帮助:

我已经为iPhone 5移植了我的应用程序。所有视图都只是横向,我在IB中将宽度设置为568像素。应用程序启动时,主视图正确显示全宽。但是当我使用presentViewController调用SettingsView时,它显示为460像素/ 3.5“模式。当我关闭SettingsView时,主视图的工具栏现在也缩小到460像素。但是我绘制的图形仍然是568像素宽。

我在Settings视图的Controller的viewDidLoad方法中做了一个NSLog(@“%f”,self.view.frame.size.width),它输出568.0,这意味着视图本身“知道”它是568宽。它仍然只显示460px。

这是代码 - 虽然没有什么花哨的......

- (IBAction) showSettingsView 
{
     FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipSideView" bundle:nil];
     controller.delegate = self;

     controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

     [self presentViewController:controller animated:YES completion:nil]  ;

     [controller release];
}


- (void)flipsideViewControllerDidFinish:(id)controller
{
    [self dismissViewControllerAnimated:YES completion:nil] ;
}

我在Apple开发论坛上发布了同样的问题,但还没有得到答案: enter link description here

这发生在iPhone 5设备和模拟器中。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

将MainWindow.xib中的MainWindow设置为“启动时全屏”,并将Metrics尺寸模拟为“Retina 4 Full Screen”。

答案 1 :(得分:1)

如果你没有为UIWindow使用xib,而是在ViewController的视图中使用xib

_settingsController = [[CNPSettingsViewController alloc] initWithNibName:@"CNPViewController" bundle:nil];
[_settingsController setDelegate:self];
[_settingsController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

//this line solved the problem for me
[_settingsController.view setBounds:[[UIScreen mainScreen] bounds]];