按下控制器后更改iOS 10中uinavigationbar中的子视图位置

按下控制器后更改iOS 10中uinavigationbar中的子视图位置,uinavigationbar,subview,uinavigationitem,ios10,Uinavigationbar,Subview,Uinavigationitem,Ios10,我的uinavigationbar有一个子视图。我在索引0处添加了。当我推送带有动画的控制器时,子视图会显示在顶部并隐藏导航项目,但如果我推送不带动画的控制器,子视图会显示在项目下方。这只会发生在iOS 10中。我不明白为什么会这样 当我按下或弹出新的视图控制器时,我在导航栏子视图重新排序方面遇到了类似的问题 实际为我做的工作是在其viewDidLoad方法中在我的基础UINavigationController上设置代理,并在navigationController:willShow:dele

我的uinavigationbar有一个子视图。我在索引0处添加了。当我推送带有动画的控制器时,子视图会显示在顶部并隐藏导航项目,但如果我推送不带动画的控制器,子视图会显示在项目下方。这只会发生在iOS 10中。我不明白为什么会这样

当我按下或弹出新的视图控制器时,我在导航栏子视图重新排序方面遇到了类似的问题

实际为我做的工作是在其
viewDidLoad
方法中在我的基础
UINavigationController
上设置代理,并在
navigationController:willShow:
delegate方法中重置导航栏上的可见性

override func viewDidLoad() {
    super.viewDidLoad()

    delegate = self
}


func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    guard let hidden = viewController.navigationController?.isNavigationBarHidden else { return }
    viewController.navigationController?.isNavigationBarHidden = !hidden
    viewController.navigationController?.isNavigationBarHidden = hidden

}
UIKit’_(ツ)_/“”