iOS5,presentModalViewController错误地显示新视图

时间:2013-06-04 03:31:31

标签: objective-c ios5 presentmodalviewcontroller

我的应用程序主要支持iOS6 +。在考虑iOS5时,我添加了以下判断。

 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) { 
    self.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentViewController:readerViewController animated:YES completion:NULL];
 }
 else {
    self.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentModalViewController:readerViewController animated:YES];
}

但是,模态视图在我的横向应用中垂直显示。我的意思是,我的应用程序是风景,模态视图只是“谎言”那里,不是我设置的全屏,只是覆盖屏幕的一部分,而未覆盖的是黑色。

我想知道是否有人可以提供帮助。谢谢你。

2 个答案:

答案 0 :(得分:1)

丁香: - 说什么是正确的。您不必担心版本。我认为您没有使用所需的视图Oreintation设置ModalView的方向。

意味着,如果你的mainViewController(你从中呈现ModalView)只支持横向模式,那么在modalViewController中,你必须设置方向,限制只显示在横向视图中。

你应该在modalViewController中编写mainViewController中编写的Orientation代码。

这些方法: -

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
    //    return YES;

}

-(BOOL)shouldAutorotate{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}

如果它不能解决你的问题,如果它有帮助,请知道该怎么做;)。

答案 1 :(得分:0)

首先,presentViewController:animated:completion:可用since iOS 5.0,因此您无需担心版本问题。如果您确实想要检查方法的可用性,则应使用

if ([self respondToSelector:@selector(presentViewController:animated:completion:)])

对于模态视图,您需要在呈现的控制器上设置modalTransitionStylemodalPresentationStyle,例如在你的情况下readerViewController。所以你的代码应该是

readerViewController.modalTransitionStyle = UIModalPresentationFullScreen;
readerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentModalViewController:readerViewController animated:YES completion:NULL];