删除UINavigationBar背景并保留阴影

时间:2014-11-26 06:08:26

标签: ios uinavigationcontroller ios8 uinavigationbar

Flickr有一个华丽的设置视图控制器(即使他们把关闭按钮放在错误的一侧!)我想知道如何实现类似的效果。

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

你将如何实现这一目标 - 如何删除UINavigationBar的背景?请注意,您无法简单地删除背景,因为滚动时文本将显示在导航栏中。

enter image description here

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我能够通过首先阻止表视图控制器来获得所需的行为。通过“扩展边缘”选项从顶部导航栏下方扩展内容。

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

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
然后,我将导航控制器嵌入到容器视图中,该视图嵌入在常规视图控制器中,并设置了自动布局约束,以便容器视图填充视图。这允许我在视图控制器中创建模糊效果,然后从表视图控制器中删除背景颜色,以便在整个导航过程中看到这种模糊效果。这是设置:

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