UINavigationController 作为 iPhone 上的弹出框?

Posted

技术标签:

【中文标题】UINavigationController 作为 iPhone 上的弹出框?【英文标题】:UINavigationController as popover on iPhone? 【发布时间】:2013-11-03 13:07:20 【问题描述】:

如何使用 ios 7 中引入的自定义 UIViewController 过渡呈现带有导航栏的 UINavigationController,如 iPhone 上的弹出框 ? 我使用标准的 UIViewController 和过渡动画师完成了这项工作:

http://www.bytolution.com/Screenshot%202013.11.02%2015.25.34.png

当尝试使用 UINavigationController 进行相同操作时,结果如下:

http://bytolution.com/Screenshot%202013.11.02%2015.27.10.png

在 WWDC session 218(需要登录)上,一位 Apple 工程师演示了我想要实现的确切目标:

http://bytolution.com/Screen%20Shot%202013-11-03%20at%2013.50.17.png

很遗憾,我在任何地方都找不到示例代码。

如果你想看看我的代码,请访问Github.com/bytolution/Apsiape

提前致谢!

【问题讨论】:

制作自定义导航栏,不是真的 【参考方案1】:

我会看看 WYPopoperController,它可以在 iPhone 上执行您想要的操作:https://github.com/nicolaschengdev/WYPopoverController

【讨论】:

感谢您的提示!我唯一的问题是 WYPopoverController 不使用 iOS 7 中引入的新的便捷 API 来进行自定义视图控制器转换。根据 WWDC 会议,一定有一种我找不到的方法:/ 遗憾的是,似乎没有其他人遇到过这个问题或找到了解决方案。【参考方案2】:

iPhone 不支持 UIPopoverController 类并且所有的模态转换都是全屏的。然而,显然您显示的屏幕截图是存在的。

任何视图控制器都可以将其视图提取并显示在另一个视图中。这就是那里所做的。黑色视图以 30% 的不透明度放置在背景上,并在其上添加“弹出”视图。为了增加效果,可以将识别的点击手势添加到黑色遮罩视图中,以在用户点击弹出框时将其关闭。

【讨论】:

您可能应该观看会议视频以了解“自定义视图控制器转换”的介绍概念。在演示中使用这种诡计会破坏会话的目的。 你是对的。我的回答是没有使用他们在您引用的 WWDC 视频中显示的机制。快速谷歌搜索发现了一个很好的例子here。【参考方案3】:

我终于想出了如何自己做。我改进了我的 Google 搜索并发现了嵌入式 UINavigationController 的诀窍。这对于自定义视图控制器转换也很有用,因为它工作得很好。您可能想查看this ***.com question。

如果您需要代码,请在我的project on GitHub 中。

【讨论】:

以上是关于UINavigationController 作为 iPhone 上的弹出框?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确关闭作为模式呈现的 UINavigationController?

在 UINavigationController 中添加 UISegmentedControl 作为 titleView

UINavigationController 作为 iPhone 上的弹出框?

呈现 UINavigationController 几个视图深度,作为初始视图

带有 UINavigationController 作为选项卡的 UITabViewController

在以 Uinavigationcontroller 作为视图的 Popovercontroller 中更改导航栏和工具栏的色调