我试图在一个 View Controller 显示时使导航栏透明。有用。然而,当我从父 View Controller 再次重新进入 View Controller 时,动画似乎不正确。
第一次导航栏以动画方式停留并消失,直到第二个 View 完全显示。然而,第二次及之后,导航栏完全消失,第二个 View 以动画显示。
我在这里创建了一个最小项目来显示问题:https://github.com/zwang/CVNavigationBarTest
问题重现步骤:
- 单击颜色 View Controller 中的代码块之一
- 点击后退按钮
- 再次单击其中一个代码块。
- 查看问题
第一次单击颜色 View Controller 中的一个颜色 block 时,过渡动画效果良好且符合预期。但是,当从第二个 View Controller 返回后再次单击其中一个色 block 时,您会注意到导航栏区域立即变黑,然后开始显示第二个 View Controller 的动画。您可以在模拟器中切换慢速动画以更清楚地看到问题。
任何帮助将不胜感激。
最佳答案
您可以做的是在更改幻灯片时删除动画。我也遇到了同样的问题,这就是我所做的,因为我没有找到更好的解决方案。
在你的 View Controller 中:
将 self.navigationController?.pushViewController(colorVC,animated: true)
设置为 animated false
。
在您的 ColorViewController 中: 覆盖后退按钮以禁用后退按钮的动画。因此,在您的 viewDidLoad 中执行以下操作:
self.navigationItem.hidesBackButton = true
let newBackButton = UIBarButtonItem(title: "New back button", style: UIBarButtonItemStyle.Bordered, target: self, action: "back:")
self.navigationItem.leftBarButtonItem = newBackButton
然后创建新的返回函数:
func back(sender: UIBarButtonItem) {
// Go back to the previous ViewController without an animation
self.navigationController?.popViewControllerAnimated(false)
}
和here您的项目包含我可以下载的更新代码。
关于ios - 当带有动画的pushViewcontroller为true时,UINavigationBar立即消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232849/