在横向模式下启动时,iPad App不会以横向模式启动并获得黑屏部分

时间:2015-02-09 12:51:26

标签: ios objective-c ipad

我有一个通用的iOS应用程序,目前我正在为iPad开发它。 当我在纵向模式下启动应用程序应用程序启动正常。但是当我以横向模式启动时,屏幕的一部分会变回,并且应用程序不会以横向模式启动。我用过

-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll; }

- (BOOL)shouldAutorotate {
    return YES;} 

但该应用程序没有以限制模式启动并且具有黑屏部分。我也附上了一个屏幕截图。enter image description here。这里有什么问题以及如何摆脱这个问题?

6 个答案:

答案 0 :(得分:2)

试试这个,在ViewDidLoad中写一下,我们需要设置self.view的插图

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
    self.edgesForExtendedLayout=UIRectEdgeNone;
}

答案 1 :(得分:1)

由于您的视图正确旋转(文本是直立的),您可以认为此问题不是旋转问题,而是布局代码/界面构建器的问题。

要解决此问题,请确保将内容视图固定到其超级视图的所有边缘the screenshot

答案 2 :(得分:1)

当iOS8出现时,我遇到了同样的问题。 iOS7一切都运行良好。花了很多时间尝试解决后我发现用故事板替换“启动xib”可以解决我的问题。

因此,尝试添加故事板,将实际的初始xib放入并重新启动。不要忘记在项目的信息中指定inizial storyboard。

答案 3 :(得分:1)

注意,你可能在iPhone6 +上也有这个问题,因为它能够在横向上运行跳板。

我很少(几乎从不)使用故事板或笔尖,所以我遇到了这个问题,因为iOs7在支持旋转的应用程序中。我在loadView或viewDidLoad中设置了viewControllers,此时viewController不知道interfaceOrientation。因为我通常以编程方式处理旋转,所以我只是在viewWillAppearAnimated中执行类似的操作:

{
              BOOL landscape = UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication]statusBarOrientation]);
              BOOL ios8 = NSClassFromString(@"UIPopoverPresentationController")!=NULL;

              if (landscape&&ios8) {

                [self willRotateToInterfaceOrientation:[[UIApplication sharedApplication]statusBarOrientation] duration:0.0];

              }

            }

答案 4 :(得分:0)

通过为我的应用程序设置UIMainStoryboardFile解决了类似的问题(尽管这对我的应用程序没有副作用,因为我在代码中设置了ViewControllers)。因此,设置主要故事板文件已针对iOS 8至10修复了该问题。

因此,请同时设置启动屏幕和主界面情节提要。

设置NSMainNibFile并没有为我解决该问题。只有情节提要。

主故事板至少应包含初始视图控制器,该控制器可能为空。

答案 5 :(得分:-1)

在appDelegate中,设置:

[self.window setFrame:[[UIScreen mainScreen] bounds]];
在didFinishLaunchingWithOptions