适应两种不同的UIPresentationController

时间:2015-07-29 02:04:35

标签: objective-c ios8 uipopovercontroller adaptive-ui uipresentationcontroller

根据当前的特征集,我想在两个不同的UIPresentationController之间进行调整。例如,对于任何特征,两个控制器可以是UIPopoverPresentationController,对于紧凑的水平特征(例如iPhone),可以是自定义UIPresentationController

不幸的是,在最新的iOS 8中,这似乎无法实现。特别是:

  • 您可以设置UIAdaptivePresentationControllerDelegate来换出演示文稿样式,但只允许使用标准的全屏演示控制器。

  • 您可以在呈现视图控制器之前选择要使用的演示控制器,但在呈现特征集合时,实际上并未实际适应,例如在iPad多任务处理或方向改变。

针对解决方案的几种不同尝试:TumblrIrace

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

假设您需要两个演示控制器进行自适应是错误的假设。

只有一个表示控制器,您必须使用委托方法调整视图和/或转换。对于自定义转换,您只需在视图控制器上设置一个转换委托类,该视图控制器是从viewControllerForAdaptivePresentationStyle返回的,在我的例子中,它是一个导航控制器,带有透明的灰色视图,底部是表格,右侧导航项目是完成按钮。我的自定义过渡使桌面从底部向上移动,同时调暗和调整灰暗视图的大小,并在导航栏中淡入淡出。如果您希望自己运行地图并点击右下方的信息按钮并在iPhone和iPad上试用它,我已经完全复制了。以下是紧凑和常规的屏幕截图: enter image description here enter image description here