我的iPad应用程序使用“页面”展示风格打开模态视图控制器。正如您所知,“页面”展示风格不会覆盖呈现视图控制器的状态栏,以指示页面展示。
以下是屏幕截图:
还有其他方法可以修复在解除嵌套模态视图控制器后呈现“页面”模态视图控制器吗?
更新: 我使用了这样奇怪的代码来解决我的问题:
我不相信没有更优雅的解决方案。有什么想法可以改进吗?
更新2:我刚刚提交了一个错误报告。你可以在那里跟踪它: rdar://15949644 更新3:这是我的示例项目: link
UIImagePickerController
来拍照。 UIImagePickerController
采用“全屏”呈现样式。在关闭图像选择器后,呈现模态视图控制器会变高 20px 并覆盖初始视图控制器的状态栏。我试图用简单的 UINavigationController
替换 UIImagePickerController
,但这也破坏了我的模态视图控制器。以下是屏幕截图:
![Full screen view controller](https://istack.dev59.com/V3vCK.webp)
viewController.view.superview.superview.superview.superview
框架的高度。但这真的很奇怪。还有其他方法可以修复在解除嵌套模态视图控制器后呈现“页面”模态视图控制器吗?
更新: 我使用了这样奇怪的代码来解决我的问题:
#define STATUS_BAR_HEIGHT 20
#define IPAD_PORTRAIT_HEIGHT 1004
#define IPAD_LANDSCAPE_HEIGHT 748
UIView *superview = nil;
// In case of this view controller included in navigationController we have to use superview of navigation's controller view
if (self.navigationController)
superview = self.navigationController.view.superview;
else
superview = self.view.superview;
CGRect r = superview.frame;
// Sometimes we have to fix height + origin, sometimes only height (becase view has bottom magnifying)
// In landscape orientation we have to fix 'width' instead of 'height', because that view controller always works in 'portrait' mode
if (self.interfaceOrientation == UIInterfaceOrientationPortrait && r.size.height > IPAD_PORTRAIT_HEIGHT) {
r.origin.y = STATUS_BAR_HEIGHT;
r.size.height = IPAD_PORTRAIT_HEIGHT;
}
else if (self.interfaceOrientation == UIInterfaceOrientationMaskPortraitUpsideDown && r.size.height > IPAD_PORTRAIT_HEIGHT) {
r.size.height = IPAD_PORTRAIT_HEIGHT;
}
else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft && r.size.width > IPAD_LANDSCAPE_HEIGHT) {
r.size.width = IPAD_LANDSCAPE_HEIGHT;
r.origin.x = STATUS_BAR_HEIGHT;
}
else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight && r.size.width > IPAD_LANDSCAPE_HEIGHT) {
r.size.width = IPAD_LANDSCAPE_HEIGHT;
}
superview.frame = r;
我不相信没有更优雅的解决方案。有什么想法可以改进吗?
更新2:我刚刚提交了一个错误报告。你可以在那里跟踪它: rdar://15949644 更新3:这是我的示例项目: link