【问题标题】:How to set a transparent navigation bar? iOS 11 swift 4 Xcode 9 [duplicate]如何设置透明导航栏? iOS 11 swift 4 Xcode 9 [重复]
【发布时间】:2018-07-10 15:15:17
【问题描述】:

右图是我需要的,左图是我得到的:

1

我正在尝试制作一个透明的导航栏,并且在我正在阅读的书中写道,您需要做的就是将此代码插入首选视图控制器的 viewDidLoad() 方法中:

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.tintColor = .white

tableView.contentInsetAdjustmentBehavior = .never

但我得到的只是一个白色的导航栏。 另外如果写的是图片上的条形差异在此代码中:

tableView.contentInsetAdjustmentBehavior = .never

但这对我不起作用

我下载了本书章节的最终项目,那里一切正常,尽管我尝试复制粘贴代码,但仍然没有任何改变

问题是 - 我已经尝试插入此代码:

navigationController?.navigationBar.isTranslucent = true

但它不起作用

如果重要的话,这本书是 AppCoda 的《Beginning iOS 11 programming》

【问题讨论】:

  • @AbhishekMitra 不完全,您引用的问题是使用用于整个应用程序的.appearance。在这种情况下,它适用于单个 ViewController

标签: ios swift xcode ios11 swift4


【解决方案1】:

使用以下代码:

navigationController?.navigationBar.isTranslucent = true

希望对你有所帮助。

编辑(更新)

使用下面的代码:

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = false

更新 2

override func viewDidAppear(_ animated: Bool) {

        navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        navigationController?.navigationBar.shadowImage = UIImage()
        navigationController?.navigationBar.isTranslucent = true
        navigationController?.navigationBar.tintColor = .red
    }

它必须工作。

【讨论】:

  • 我已经试过了。没用
  • 我找回了返回按钮,但栏仍然是白色的
  • @ДмитрийМеньшиков 我认为由于您的navigationController?.navigationBar.tintColor = .white 这条线的和平,请这样做navigationController?.navigationBar.tintColor = .clear 并让我知道。
  • 通过改变这个后退按钮再次消失,导航栏仍然是白色的
  • @ДмитрийМеньшиков 确保您要添加的最顶层视图,不应将顶部约束设置为应设置为查看的安全区域。那么上面的代码就可以正常工作了。
【解决方案2】:

检查此代码

  override func viewWillAppear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
    }
    override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = false     
    }

【讨论】:

  • 我下载了你的项目,但缺少 main.stroyboard 和一些其他文件
猜你喜欢
  • 2018-03-05
  • 2018-03-05
  • 2016-12-20
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
相关资源
最近更新 更多