HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iPad / iOS7:“页面”模式视图控制器在显示“全屏”视图控制器后的奇怪行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的iPad应用程序打开带有“页面”演示风格的模态视图控制器.如您所知,“页面”演示文稿样式不包括呈现视图控制器以指示页面显示的状态栏.

从模态视图控制器,应用程序打开UIImagePickerController来制作照片. UIImagePickerController具有“全屏”演示风格.解雇图像选择器呈现模态视图控制器后变为20px更高并重叠初始视图控制器的状态栏.

我试图用简单的UINavigationController替换UIImagePickerController,它也破坏了我的模态视图控制器.

有屏幕截图:

他们只有恢复’Page’视图控制器大小的方法是在返回’Page’视图控制器后改变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:我刚刚开了一个bug.你可以在那里关注它:rdar://15949644

更新3:有我的示例项目:link

解决方法

没有好的解决方案,它是一个Apple bug,在修复之前,你必须解决它.它尚未在iOS 7.1中修复.我致力于解决这个问题,并意识到我也在实施相同的解决方案.这很难看,但它确实有效.

关于这个设计的一个词.我猜想Apple为何忽略了这个问题是因为全屏呈现一个视图控制器并不是Apple会做的事情.这当然不是一个借口,有时除了提供全屏之外没有其他选择(我们必须打开一个摄像机视图,例如必须以全屏方式打开).也许你可以改变你的设计以适应Apple的错误.

大佬总结

以上是大佬教程为你收集整理的iPad / iOS7:“页面”模式视图控制器在显示“全屏”视图控制器后的奇怪行为全部内容,希望文章能够帮你解决iPad / iOS7:“页面”模式视图控制器在显示“全屏”视图控制器后的奇怪行为所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。