iOS 8 弹出框宽度 = 0 在 iPad 上仅在纵向模式下

Posted

技术标签:

【中文标题】iOS 8 弹出框宽度 = 0 在 iPad 上仅在纵向模式下【英文标题】:iOS 8 popover width = 0 on iPad in Portrait mode only 【发布时间】:2015-05-01 17:52:37 【问题描述】:

我在 IB 中设置了一个非常简单的 UI 设计,其中分段控件调用 segue 以在 iPad 上显示弹出框。 segue 设置为“Present as popover”并有一个锚点。呈现的视图控制器是嵌入在导航控制器中的表格。

在我的 prepareForSegue 代码中,我只设置了标题。

呈现的视图控制器有一个定义为的preferredContentSize方法

- (CGSize)preferredContentSize 
CGSize size;

if (self.traitCollection.userInterfaceIdiom == UIUserInterfaceIdiomPad) 
    size = CGSizeMake(600, 600);
 else 
    size = CGSizeMake(320, 480);

return size;

这在 iPad 横向和 iPhone 纵向和横向(全屏)中都非常有效。但在 iPad 的纵向模式下,弹出框矩形是 左侧:0.000000,顶部:13.000000,宽度:0.000000,高度:31.000000。宽度为 0.0000 显然不会显示。

如果我在 iPad 上以横向模式显示弹出框,然后将其旋转为纵向,则弹出框仍然正确显示。

那么我做错了什么,弹出框的框架在纵向模式下被重置为零宽度?

【问题讨论】:

【参考方案1】:

不幸的是,我遇到了与您描述的完全相同的问题。

iPad 横屏没问题 iPod/iPhone 都可以,任何方向都可以

在 iPad 横向显示它并旋转到纵向可以正确显示弹出框。

我与您的唯一区别是我的弹出框在“viewDidAppear 处为我提供了一个 0,0,0, 13 "方法。

【讨论】:

以上是关于iOS 8 弹出框宽度 = 0 在 iPad 上仅在纵向模式下的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITesting 如何关闭弹出框(iPad 弹出框不提醒样式)

带有 ModalPresentationStyle 的弹出框不在 iOS 7 iPad 中居中

iOS 5 中的弹出框变化?

弹出框消失时我可以发出通知吗(iPad)

弹出框内的 UITableView 宽度

iPad 故事板应用程序 - 弹出框和模态代表