iPad / iOS7:从中呈现“全屏”视图控制器后,“页面”模式视图控制器出现奇怪行为

维塔利S.

我的iPad应用程序使用“页面”演示样式打开模式视图控制器。如您所知,“页面”呈现样式不会覆盖呈现视图控制器的状态栏以指示页面呈现。

初始视图控制器

页面模式视图控制器

从模态视图控制器中,该应用程序将打开UIImagePickerController以进行照片制作。UIImagePickerController具有“全屏”演示样式。解散图像选择器后,显示的模态视图控制器会变高20px,并且与初始视图控制器的状态栏重叠。

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

有屏幕截图: 全屏视图控制器

模态视图控制器损坏

恢复“页面”视图控制器大小的唯一方法是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;

我认为没有更好的解决方案。有什么想法如何改进吗?

UPDATE2:我刚刚打开一个错误。您可以在此处关注它:rdar:// 15949644

UPDATE3:有我的示例项目:链接

里奥·纳坦

没有一个好的解决方案,这是一个Apple bug,在修复之前,您必须解决它。在iOS 7.1中尚未修复。我为此制定了一个解决方案,并意识到我也在实现相同的解决方案。很难看,但是可以用。

一句话就这个设计。我猜为什么Apple忽略了这个问题是因为全屏显示视图控制器并不是Apple可以做的。当然,这不是借口,有时除了呈现全屏之外,别无选择(例如,我们必须打开摄像机视图,例如,必须以全屏模式打开它)。也许您可以更改设计以适应Apple的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在iPad的详细视图中选择默认项目?(在拆分视图控制器中)

来自分类Dev

调整iPad中第二个子视图控制器视图的大小

来自分类Dev

UINavigationController:在iPad上关闭另一个控制器时显示视图控制器

来自分类Dev

UINavigationController:在iPad上关闭另一个控制器时,显示视图控制器

来自分类Dev

在UISplitViewController中调整详细视图控制器的大小[仅限于iPad横向]

来自分类Dev

最佳代码实践iPhone和iPad自定义视图控制器

来自分类Dev

在横向模式下,ios7 iPad的视图尺寸错误

来自分类Dev

iPad导航控制器工具栏位置

来自分类Dev

iPad上有USB主机控制器吗?

来自分类Dev

如何在iOS中通过iPhone的“选项卡式”和iPad的“拆分”方式实现两个视图控制器?

来自分类Dev

表视图控制器的奇怪行为

来自分类Dev

iOS7-iPhone呈现视图控制器-UIPickerView

来自分类Dev

从UITabBarController在当前上下文中呈现模式视图控制器后出现黑屏

来自分类Dev

在视图控制器/页面视图控制器中使图像视图全屏显示(快速)

来自分类Dev

如何在情节提要iOS7中正确重用模式视图/控制器

来自分类Dev

源视图控制器与呈现视图控制器

来自分类Dev

在表格视图中呈现模式视图控制器

来自分类常见问题

iOS 7半透明模式视图控制器

来自分类Dev

如何使UISplit视图控制器的工作方式类似于iPhone版iPad版目的地?segues是否存在任何问题?

来自分类Dev

SpriteKit iPad视图缩放

来自分类Dev

iOS - 从呈现的视图控制器呈现视图控制器会改变其高度

来自分类Dev

ios7呈现视图控制器在呈现时不会旋转,导致状态栏消失

来自分类Dev

多个视图控制器-iOS 7

来自分类Dev

iOS8 iOS7和iOS6防止旋转呈现的视图控制器

来自分类Dev

页面视图控制器更新视图控制器?

来自分类Dev

全屏模式视图控制器,显示在表单下

来自分类Dev

PopOver视图控制器覆盖全屏

来自分类Dev

使用尺寸类别将控制器从iPhone更新到iPad?

来自分类Dev

如何在导航控制器层次结构中限制iOS7中每个视图控制器的方向

Related 相关文章

  1. 1

    如何在iPad的详细视图中选择默认项目?(在拆分视图控制器中)

  2. 2

    调整iPad中第二个子视图控制器视图的大小

  3. 3

    UINavigationController:在iPad上关闭另一个控制器时显示视图控制器

  4. 4

    UINavigationController:在iPad上关闭另一个控制器时,显示视图控制器

  5. 5

    在UISplitViewController中调整详细视图控制器的大小[仅限于iPad横向]

  6. 6

    最佳代码实践iPhone和iPad自定义视图控制器

  7. 7

    在横向模式下,ios7 iPad的视图尺寸错误

  8. 8

    iPad导航控制器工具栏位置

  9. 9

    iPad上有USB主机控制器吗?

  10. 10

    如何在iOS中通过iPhone的“选项卡式”和iPad的“拆分”方式实现两个视图控制器?

  11. 11

    表视图控制器的奇怪行为

  12. 12

    iOS7-iPhone呈现视图控制器-UIPickerView

  13. 13

    从UITabBarController在当前上下文中呈现模式视图控制器后出现黑屏

  14. 14

    在视图控制器/页面视图控制器中使图像视图全屏显示(快速)

  15. 15

    如何在情节提要iOS7中正确重用模式视图/控制器

  16. 16

    源视图控制器与呈现视图控制器

  17. 17

    在表格视图中呈现模式视图控制器

  18. 18

    iOS 7半透明模式视图控制器

  19. 19

    如何使UISplit视图控制器的工作方式类似于iPhone版iPad版目的地?segues是否存在任何问题?

  20. 20

    SpriteKit iPad视图缩放

  21. 21

    iOS - 从呈现的视图控制器呈现视图控制器会改变其高度

  22. 22

    ios7呈现视图控制器在呈现时不会旋转,导致状态栏消失

  23. 23

    多个视图控制器-iOS 7

  24. 24

    iOS8 iOS7和iOS6防止旋转呈现的视图控制器

  25. 25

    页面视图控制器更新视图控制器?

  26. 26

    全屏模式视图控制器,显示在表单下

  27. 27

    PopOver视图控制器覆盖全屏

  28. 28

    使用尺寸类别将控制器从iPhone更新到iPad?

  29. 29

    如何在导航控制器层次结构中限制iOS7中每个视图控制器的方向

热门标签

归档