当作为弹出框触发时更改 MasterViewController 的大小

Posted

技术标签:

【中文标题】当作为弹出框触发时更改 MasterViewController 的大小【英文标题】:Change the size of MasterViewController when fired as a popover 【发布时间】:2012-03-31 12:24:31 【问题描述】:

当使用溢出视图控制器时,我有一个主视图和详细视图。当 iPad 处于纵向模式时,主视图显示为弹出窗口。如何调整主视图(弹出视图)的高度? 我试过了:

 self.contentSizeForViewInPopover = CGSizeMake(320.0, 2 * 52.0); 

但我不确定要设置这个吗?

【问题讨论】:

我也有同样的问题,升级到5.1开发工具后就开始了。 所以您认为是 SDK/OS 中的错误? 嗯,对我来说这是行为上的改变。我不确定这是不是一个错误,并且还没有花很多时间进行调查...... 这当然取决于SDK版本;我仍在使用工作示例的 5.0。 值得一提的是,我从 5.0 升级到 5.1,它在 5.0 中非常适合我。 【参考方案1】:

您曾经可以使用 contentSizeForViewInPopover 在 vi​​ewDidLoad 中设置大小。但是在 ios 5.1 中,主视图控制器的显示样式被更改为滑入而不是显示为标准的弹出框。据我所知,它仍然一个 UIPopover,但我们不能再修改它的大小。我在视图上尝试了 contentSizeForViewInPopover,在弹出框as suggested on the developer forums 上尝试了 setPopoverContentSize,都没有任何效果。

UISplitViewController class reference 不承认此更改,UIViewController 或 UIPopoverController 的类引用也不承认,View Controller Programming Guide 仍显示主视图控制器弹出窗口的旧样式。

您可以尝试更改详细视图中表格视图的高度,然后更改hide the popover's background。我自己没试过。

另外,由于您的详细视图显示的是地图,您可能需要disable the right-swipe gesture that now invokes the master view,以防止干扰地图手势。

【讨论】:

【参考方案2】:

我见过 Apple 示例使用主视图控制器的 awakeFromNib 方法和 viewDidLoad。我不确定是否有一个压倒一切的理由来选择其中一个。

【讨论】:

奇数。我刚刚在一个测试拆分视图项目中尝试过,简单的案例就奏效了。 (我确实看到了一个“错误”,将新控制器推入主区域,然后返回到小控制器,将其设置回默认大小......不知道如何解决这个问题。)

以上是关于当作为弹出框触发时更改 MasterViewController 的大小的主要内容,如果未能解决你的问题,请参考以下文章

将图像显示为弹出框

将 ViewController 呈现为弹出框

“呈现为弹出框”segues 和视图大小

如何在 iPhone、iOS 8 上为弹出框设置动画

在通用应用程序中,如何将模态视图转换或重用为弹出框?

如何在 iPhone 上以编程方式在 Swift 中将 UIViewController 呈现为弹出框