【问题标题】:UIViewController background image that spans up behind the navigation bar?跨越导航栏后面的 UIViewController 背景图像?
【发布时间】:2018-11-08 05:11:52
【问题描述】:

我有一个有趣的问题,我不确定是否可以通过标准方式解决:

我有一个 UIViewController,其 UIImageView 位于顶部,与容器的顶部空间齐平。标准的东西。

然而,我想做的是看看是否有办法让图像也出现在导航栏后面(因此导航栏覆盖在背景图像之上)。

我的想法是这是不可能的,因为图像不能跨越两个视图控制器。我当然可以将它放在一个视图控制器上,甚至让导航栏有一个背景图像,但我不能让它同时包含相同的图像,对吗?

我想实现这样的事情的唯一方法是隐藏我的导航栏,并制作我自己的“作弊”一个实际驻留在视图控制器中的“作弊”来模拟它。

任何想法或这是否打破了基本面。

编辑:在尝试了这两个建议之后,它最终会这样做(在这两种情况下): https://imgur.com/a/RwALHac

所以它几乎就像将顶部栏设置为一张图片,底部的表格视图设置为图片但缩小了

有什么想法吗?

【问题讨论】:

    标签: ios swift swift4


    【解决方案1】:

    使透明导航栏可见背景图像。将以下代码添加到您的导航栏扩展中。

    func transparentNavigationBar() {
            self.navigationController!.navigationBar.setBackgroundImage(UIImage(),for: UIBarMetrics.default)
            self.navigationController?.navigationBar.shadowImage = UIImage()
            self.navigationController?.navigationBar.isTranslucent = true
            self.navigationController!.view.backgroundColor = UIColor.clear
            self.navigationController?.navigationBar.backgroundColor = UIColor.clear
        }
    

    【讨论】:

    • 试过了,但现在结果是这样的,有什么想法吗? imgur.com/a/RwALHac
    • 你是否设置了imageView的top constraints,等于superView的top constraints。
    • 嘿,谢谢,是的。它说“超级视图的顶部空间:-100 常量”
    【解决方案2】:

    其实这很简单。确保导航控制器的根视图控制器的边缘在顶栏下扩展(界面构建器中的简单复选框),然后使用以下代码使导航栏透明:

    navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationBar.shadowImage = UIImage()
    .navigationBar.isTranslucent = true
    

    这将使您的视图控制器(因此,它是背景图像)一直延伸到屏幕顶部,导航栏重叠。导航栏本身将不可见,但其内容将是(按钮、标题等)

    【讨论】:

    • 感谢您的宝贵时间,我最终做出了更改,但它看起来像这样:imgur.com/a/RwALHac
    • 好像您添加了单独的图像作为导航栏的背景。你不应该这样做,除非我误解了你想要达到的目标。
    • 看起来是这样,但实际上是同一张图片,只是放大了一张,另一张没有。想法?
    • 您根本不应该添加图像。请注意示例代码中的 UIImage 初始化程序。只是UIImage(),没有参数。从您提供的屏幕截图中,我猜您添加了实际图像。一些代码将有助于查看确切的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    相关资源
    最近更新 更多