如何在标签栏上显示视图,但不在导航栏上显示?

时间:2015-01-02 05:28:03

标签: ios objective-c cocoa-touch uiviewcontroller ios8

我想提供一个模式视图,显示在UITabBar上,而不是UINavigationBar上。

根据我的理解,在所有内容之上叠加视图的最佳方法是将其置于自己的UIWindow中。这很好用,如果我在窗口中创建视图的y原点低于导航栏,它就可以很好地工作。

然而,让它低于y起源真的很难。我可以使用topLayoutGuide.length属性来定位y,但是当我旋转时,导航栏高度会发生变化时不再为真。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我最近必须处理类似的事情,并最终以模态方式呈现您将要调用导航控制器的新视图,然后将其setDefinesPresentationContext:设置为Yes

需要

setDefinesPresentationContext:,以便呈现视图控制器将呈现视图的边界限制为呈现视图的可见区域。因此,视图控制器保持在当前可见窗口的范围内(默认值为no,在这种情况下,呈现的视图一直要求通过VC层次结构定义上下文,直到它到达声明此角色的VC,或直到它击中UIWindow)。

使用此方法,您不必计算视图的边界,它只是自动完成。有关此方法的Apple文档,请参阅完整说明。


(和无耻的插件,我在my blog上写了它。它在“呈现搜索栏”下面。原谅格式化,仍在进行中)