我有一个有趣的问题,我不确定是否可以通过标准方式解决:
我有一个UIViewController,其UIImageView位于顶部,与容器的顶部空间齐平。标准的东西。
但是,我想尝试做的是看是否有一种获取方法,以便图像也可以在导航栏的后面运行(这样,该栏就会覆盖在背景图像的顶部)。
我的想法是不可能的,因为图像不能跨越两个视图控制器。我当然可以在一个视图控制器上使用它,甚至导航栏上也可以使用背景图像,但是我无法做到这一点,所以两者都必须包含相同的图像,对吗?
我认为实现这种目标的唯一方法是隐藏导航栏,并制作自己的“作弊”工具,使其实际上位于视图控制器内部以对其进行仿真。
任何想法或正在破坏基本面。
编辑:尝试了两种建议后,最终都这样做(在两种情况下): https://imgur.com/a/RwALHac
因此几乎就像将顶部栏设置为一幅图像,将底部表视图设置为该图像但缩小了一样
有什么想法吗?
答案 0 :(得分:0)
实际上,这可能非常简单。确保导航控制器的根视图控制器的边缘在顶部栏(界面生成器中的简单复选框)下方延伸,然后使用以下代码使导航栏透明:
navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationBar.shadowImage = UIImage()
.navigationBar.isTranslucent = true
这将使您的视图控制器(因此是背景图像)一直延伸到屏幕顶部,导航栏重叠。导航栏本身将不可见,但其内容将为(按钮,标题等)
答案 1 :(得分:0)
使透明导航栏可见背景图像。将以下代码添加到导航栏扩展中。
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
}