如何将NavigationBar置于最前面

时间:2019-05-16 06:07:09

标签: ios swift xcode user-interface uinavigationbar

我已经在swift 4中实现了自定义的后退按钮,但是该按钮没有显示。我可以在它所在的层中看到它,但它在背面,无法将其带到正面。 这是我在viewDidload中的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.white
    collectionView?.translatesAutoresizingMaskIntoConstraints = false

    collectionView?.contentInset = UIEdgeInsets(top: 8, left: 0, bottom: 58, right: 0)
    collectionView?.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)
    collectionView?.alwaysBounceVertical = true
    collectionView?.backgroundColor = UIColor(patternImage: UIImage(named: "chat-bg")!)
    collectionView?.register(ChatMessageCell.self, forCellWithReuseIdentifier: cellId)

    collectionView?.keyboardDismissMode = .interactive


    let username = Auth.auth().currentUser?.displayName
    let backbutton = UIButton(type: .custom)
    backbutton.translatesAutoresizingMaskIntoConstraints = false
    backbutton.setImage(UIImage(named: "back"), for: .normal) // Image can be downloaded from here below link
    backbutton.setTitle(username, for: .normal)
    backbutton.setTitleColor(backbutton.tintColor, for: .normal) // You can change the TitleColor
    backbutton.addTarget(self, action: #selector(backAction), for: .touchUpInside)

    self.navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(customView: backbutton)

    self.navigationController?.navigationBar.addSubview(backbutton)
    setupInputComponents()
    setupKeyboardObservers()
}

此外,还附上了布局的屏幕截图 我缺少什么?感谢您的帮助。enter image description here

3 个答案:

答案 0 :(得分:0)

添加此

UIApplication.shared.keyWindow!.bringSubviewToFront(self.navigationController?.navigationBar)

OR

self.navigationController?.navigationBar.layer.zPosition = 1


self.navigationController?.navigationBar.alpha = 1.0
self.navigationController?.navigationBar.translucent = false

答案 1 :(得分:0)

能否请您收集的最高约束条件查看,它需要来自超级视图或安全区域,而不是来自主视图的顶部。基本上,集合视图会隐藏导航栏。如果您可以告诉我集合视图约束,则将帮助您轻松解决问题。

答案 2 :(得分:0)

我终于解决了。该问题与我的代码的这一部分无关。它与另一个控制器有关,该控制器是CustomTabController并包含navigationBar。我无法通过此代码覆盖它。因此,我将navigationBar部分移到了CustomBarController之外,从而解决了该问题。这个答案是非常特定于我的项目的,只是分享了它,以使读者知道它是以不同的方式修复的。