用于解除由UIPopoverPresentationController呈现的View Controller的UI,无论Size Class如何

时间:2015-06-22 05:26:27

标签: ios objective-c swift uiviewcontroller

我有一个针对iOS 8的通用应用Xcode 7 Beta。

我使用@Value("${facebook.clientId}") 呈现视图控制器。

当以任何常规尺寸类别(例如,任何方向的全屏iPad)呈现时,视图控制器将显示为弹出窗口,其大小与我在UIPopoverPresentationController属性中设置的大小相同。在视图控制器范围之外的点击将关闭弹出窗口。

以紧凑宽度尺寸等级(例如纵向任何iPhone)呈现时,“popover”将成为全屏视图,从底部向顶部滑动。

问题

虽然iPad popover具有内置的解雇行为(即在弹出窗口外点击),但全屏显示的“popovers”却没有。因此需要一些UI以便为用户提供一种解除弹出窗口的方法。

问题

提供UI的最佳(推荐?)方式是什么,它只出现在Compact Width Size Class中,以便为用户提供一个选项来关闭(全屏)“popover”View Controller?< / p>

讨论

我看到的一种方法是在[{1}}中嵌入[View Controller to present]。导航栏中添加了一个条形按钮,但我们的插座可以告诉呈现的视图控制器关闭演示文稿。

然而,这不仅需要额外的,不需要的层次结构,而是iPad上的简单呈现的View Controller,但它需要preferredContentSize中的环境检查(idiom?size class?)以编程方式隐藏{{ 1}}如果使用常规宽度尺寸类(例如iPad)。这让我感到......脆弱。

另一个选择是执行上述操作,但使用Interface Builder中的Size Classes以非编程方式安装/卸载导航元素。

思想?

相关链接,discussing the detection of popover mode

1 个答案:

答案 0 :(得分:0)

查看Interface Builder,您可以根据应用程序上当前运行的大小类提供任何视图:)如果我记得很清楚(因为我现在无法检查,因为我在公共汽车上您可以在所选视图的“属性检查器”选项卡中指定要在特定“大小”类中可用的视图。这样你只需要在视图中添加一个带有项目的按钮或导航栏,并使其仅适用于紧凑宽度:)我今天会更详细地检查你的截图:)