popViewController(animated:true)动画运行缓慢

时间:2018-08-15 10:58:08

标签: ios swift uinavigationcontroller uinavigationbar

我在imageView上添加了一个轻击手势识别器,因此当用户在下面的图像上点击时会调用该功能。

@objc func handleTap(_ sender: UITapGestureRecognizer) {

            self.navigationController?.popViewController(animated: true)
}

当我推动细节视图控制器时,动画看起来很好并且可以平滑运行,但是当我使用上述方法对popViewController(animated:true)进行动画处理时,它并不是那么平滑,甚至可能冻结一秒钟。

我还使用viewWillAppear和viewWillDisappear方法在详细视图控制器中隐藏导航栏。我已经读到这可能会导致动画运行缓慢,但仍然无法找到解决该问题的答案。

  override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.isNavigationBarHidden = true
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.isNavigationBarHidden = false
    }

2 个答案:

答案 0 :(得分:0)

尝试一下,我不确定,但是可能会起作用

DispatchQueue.main.async {
            self.navigationController?.popViewController(animated: true)
        }

答案 1 :(得分:0)

在覆盖viewDidDisappear(_ animated: Bool)时,您呼叫super.viewWillAppear(animated)。您可能现在已经知道,应该改为致电super.viewDidDisappear(animated)。您更正后的代码应为:

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    navigationController?.isNavigationBarHidden = false
}