为什么在UIPopoverController中显示的视图控制器的顶部被截断?

时间:2014-09-09 10:10:55

标签: objective-c ios8

当用户按下按钮时,我的应用程序在UIPopoverController中显示一个视图控制器。在iOS7上工作正常,但在iOS8测试版中,视图控制器的顶部位于popover的导航栏下方。您可以在下面的屏幕截图中看到差异。

我制作了一个非常简单的应用程序来显示问题。有一个按钮连接到下面显示的方法。内容是一个非常简单的视图控制器,黄色背景和两个标签。 thePopoverController是一个UIPopoverController。

- (IBAction)go:(id)sender {

    self.contents = [[ContentsViewController alloc] init];

    UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:self.contents];
    self.thePopoverController = [[UIPopoverController alloc] initWithContentViewController:navController];

    [self.thePopoverController presentPopoverFromRect:self.view.frame inView:self.view permittedArrowDirections:0 animated:TRUE];
}

有谁知道为什么会在iOS8上发生这种情况?有没有办法让它在iOS7和8上运行,而不必硬编码偏移量?任何帮助非常感谢!

干杯

Screenshot on iOS7

Screenshot on iOS8

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题,并从我的视图控制器的edgesForExtendedLayout掩码中移除UIRectEdgeTop为我修复了它。所以在设置self.contents之后,请执行以下操作:

self.contents.edgesForExtendedLayout = UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight;