不需要的"粘性"返回segll后,在NavBar的色调

时间:2018-04-16 11:59:47

标签: ios swift uiviewcontroller uinavigationbar

从VC2点击back后,我在VC1的navBar下面得到了一个粘性固体色调。在发布时,我没有看到这种粘性,只有在点击back之后。如何消除这种粘性?这样的图像。

VC1中的NavBar没有粘性,即当我拉下导航栏时,白色背景会拉伸:

NavBar in VC1 without tint

VC1中的NavBar有粘性,即当我拉下导航栏时,白色背景不会拉伸 NavBar in VC1 with stickiness after clicking 'back' from VC2

到目前为止

代码:

//At viewDidLoad() in VC1
navigationController?.navigationBar.barTintColor = .white


//At viewDidLoad() in VC2

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.isTranslucent = true
navigationController?.view.backgroundColor = .clear
navigationController?.navigationBar.barTintColor = .white
navigationController?.navigationBar.shadowImage = UIImage()

我已经在VC2中实现了这样,因为我有一个mapView,我想一直传播到状态栏。

当我在VC1中拉下导航栏时,是否有人能够建议如何移除粘性色调以使白色色调伸展?

1 个答案:

答案 0 :(得分:0)

它在后退按钮上发生的原因是因为VC2中导航栏上的更改也适用于VC1的导航栏。

您可以尝试通过将代码移动到viewWillAppear方法来修复它,而不是将以下行添加到VC1代码中:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.isTranslucent = true
    navigationController?.view.backgroundColor = .clear
    navigationController?.navigationBar.barTintColor = .white
    navigationController?.navigationBar.shadowImage = UIImage()
}

VC2:

{{1}}