iPadiOS7:“页面”模式视图控制器在显示“全屏”视图控制器后的奇怪行为

iPadiOS7:“页面”模式视图控制器在显示“全屏”视图控制器后的奇怪行为,第1张

概述我的iPad应用程序打开带有“页面”演示风格的模态视图控制器.如您所知,“页面”演示文稿样式不包括呈现视图控制器以指示页面显示的状态栏. 从模态视图控制器,应用程序打开UIImagePickerController来制作照片. UIImagePickerController具有“全屏”演示风格.解雇图像选择器呈现模态视图控制器后变为20px更高并重叠初始视图控制器的状态栏. 我试图用简单的UINa 我的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 748UIVIEw *supervIEw = nil;// In case of this vIEw controller included in navigationController we have to use supervIEw of navigation's controller vIEwif (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' modeif (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:“页面”模式视图控制器在显示“全屏”视图控制器后的奇怪行为所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1084421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存