【问题标题】:Push ViewController subviews beneath NavigationBar when translucent is True, Programmatically当 translucent 为 True 时,以编程方式在 NavigationBar 下推送​​ ViewController 子视图
【发布时间】:2018-05-21 01:01:27
【问题描述】:

这个问题要求在 Swift 4、iOS 11 中实现

有没有什么办法可以让ViewController的每一个子视图在UINavigationBar下时都被下推?

如果导航栏不是半透明的,则子视图位于其下方。这就是我想要的。

Desired Result

但是当导航栏是 TRANSLUCENT 时,子视图位于其下方。我不想要它。我希望子视图被按下,就像导航栏不透明一样。

Undesired Result

我以编程方式创建视图:

 class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.red
        let navBar = (self.parent as? UINavigationController)?.navigationBar
        navBar?.isTranslucent = true
    }

    func makeChildView() {
        let myframe = CGRect(x: 0, y: 10, width: self.view.frame.width, height: 
    self.view.frame.height * 0.4)
        let view = UIView(frame: myframe)
        view.backgroundColor = UIColor.green
        self.view.addSubview(view)
    }

使用自动布局

我可以使用自动布局来解决这个问题。但我只想知道如果可能的话,如何在没有自动布局的情况下实现这个结果。还有其他方法吗?

【问题讨论】:

  • 代码请使用markdown而不是图片。
  • 好的,我来写吧。我很抱歉。

标签: ios swift cocoa-touch uiview


【解决方案1】:

Swift 3.x

navBar?.isTranslucent = true
self.automaticallyAdjustsScrollViewInsets = false

添加此行,您就可以开始了。

【讨论】:

  • self.automaticallyAdjustScrollViewInsets 在 iOS 11 中已弃用。我在每个问题中都找到了这样的答案,但因为它对我不起作用,所以我需要另一个解决方案。
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
相关资源
最近更新 更多