Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在导航栏后面向上延伸的UIViewController背景图像?_Ios_Swift_Swift4 - Fatal编程技术网

Ios 在导航栏后面向上延伸的UIViewController背景图像?

Ios 在导航栏后面向上延伸的UIViewController背景图像?,ios,swift,swift4,Ios,Swift,Swift4,我有一个有趣的问题,我不确定能否以标准方式解决: 我有一个UIViewController,其UIImageView位于顶部,与容器的顶部空间齐平。标准的东西 然而,我想尝试做的是,看看是否有办法得到它,这样图像也会在导航栏后面运行(这样导航栏就会覆盖在背景图像的顶部) 我认为这是不可能的,因为图像不能跨越两个视图控制器。我当然可以把它放在一个视图控制器上,甚至让导航栏有一个背景图像,但我不能让它同时包含相同的图像,对吗 我认为实现这种效果的唯一方法是隐藏我的导航栏,并制作一个真正驻留在view

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

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

然而,我想尝试做的是,看看是否有办法得到它,这样图像也会在导航栏后面运行(这样导航栏就会覆盖在背景图像的顶部)

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

我认为实现这种效果的唯一方法是隐藏我的导航栏,并制作一个真正驻留在viewcontroller中的“作弊”栏来模拟它

有什么想法或想法吗?这会破坏基本面吗

编辑:尝试这两种建议后,它最终都会这样做(在这两种情况下):

因此,它几乎就像将顶部栏设置为一个图像,将底部的tableview设置为图像,但缩小了


有什么想法吗?

实际上这很简单。确保导航控制器的根视图控制器的边缘延伸到顶部栏下(interface builder中的简单复选框),然后使用以下代码使导航栏透明:

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

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

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

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
    }

感谢您的时间,我最终做出了更改,但看起来是这样的:似乎您添加了一个单独的图像作为导航栏的背景。你不应该这样做,除非我误解了你想要实现的目标。看起来是这样的,但事实上是同一个图像,只是一个放大了,另一个没有放大。想法?你根本不应该添加图像。注意示例代码中的UIImage初始化器。它只是
UIImage()
,没有参数。从您提供的屏幕截图来看,我猜您添加了一幅真实的图像。一些代码将有助于了解确切的问题。尝试过,但结果是这样的,有什么想法吗?您是否设置了imageView的顶部约束,与superView的顶部约束相同。嘿,谢谢,是的,我设置了。上面写着“到superview的顶部空间:-100恒定”