删除UINavigationBar背景并保留阴影

Flickr有一个华丽的设置视图控制器(即使他们把closuresbutton放在错误的一边!),我想知道如何能达到类似的效果。

请注意,导航控制器没有背景,但它下面有一条阴影线以提供分隔。 底层模糊视图填充整个显示,包括状态栏下方。

你将如何实现这一点 – 你怎么能删除UINavigationBar的背景? 请注意,您不能简单地删除背景,因为当您滚动文本将出现在导航栏中。

在这里输入图像说明

使用UILabel而不是导航栏(他们可能做同样的事情,从酒吧的高度来判断)。 阴影线只是另一个视图,具有适当的背景颜色。

隐藏背景图片的确在滚动时显示不足的文字。 我想你可以尝试实现这一目标的一种方法是不扩展到NavBar下的ScrollView? 另一种方法是使用初始视图的快照创build背景,并将其用作navBar的背景图像 – 希望有所帮助。

我能够通过首先防止表格视图控制器的内容通过“延伸边缘”选项在顶部导航栏下延伸来获得所需的行为。

要删除导航栏的外观,我将它制成了一个黑色半透明的栏,然后为其背景图像添加一个新的空白图像,如下所示:

 self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 

然后,我将导航控制器embedded到常规视图控制器中embedded的容器视图中,并设置了自动布局约束,以便容器视图填充视图。 这允许我在视图控制器中创build模糊效果,然后从表格视图控制器中移除背景颜色,以便在整个导航过程中看到这种模糊效果。 这是设置:

 UIViewController containerView UINavigationController UITableViewController -> UITableViewController -> UITableViewController...