如何在标签栏而不是导航栏上显示视图?
Posted
技术标签:
【中文标题】如何在标签栏而不是导航栏上显示视图?【英文标题】:How do I show a view over the tab bar but not over the navigation bar? 【发布时间】:2015-01-02 05:28:03 【问题描述】:我想展示一个在UITabBar
上显示但不在UINavigationBar
上显示的模式视图。
据我了解,将视图覆盖在所有内容之上的最佳方法是将其放置在自己的 UIWindow
中。这很好用,如果我使窗口中视图的 y 原点低于导航栏,它就可以完美地工作。
然而,让它低于 y 原点真的很难。我可以使用topLayoutGuide.length
属性来定位y,但是当我旋转时,随着导航栏高度的变化,这不再是真的。
我该怎么做?
【问题讨论】:
如果您不想添加叠加层,那么您可以使用导航控制器展示您的视图控制器。所以导航栏不会隐藏。 @ChintaN-Maddy-Ramani 这是一个简单的视图,我对添加这种复杂程度不感兴趣。 【参考方案1】:我最近不得不处理类似的事情,最终以模态方式呈现一个新视图,您将希望调用导航控制器,然后将其 setDefinesPresentationContext:
设置为 Yes
。
setDefinesPresentationContext:
是必需的,以便呈现视图控制器将呈现视图的边界限制在呈现视图的可见区域。结果,视图控制器保持在当前可见窗口的范围内(默认为否,在这种情况下,呈现的视图不断要求通过 VC 层次结构向上定义上下文,直到它到达声明此角色的 VC,或直到它碰到 UIWindow)。
使用此方法,您不必计算视图的边界,它会自动完成。不过,请查看有关此方法的 Apple 文档以获取完整说明。
(和无耻的插件,我在my blog 上写过它。它在“呈现搜索栏”下。请原谅格式,仍在进行中)
【讨论】:
以上是关于如何在标签栏而不是导航栏上显示视图?的主要内容,如果未能解决你的问题,请参考以下文章