ios - 当带有动画的pushViewcontroller为true时,UINavigationBar立即消失

标签 ios swift swift2 uicollectionview uinavigationbar

我试图在一个 View Controller 显示时使导航栏透明。有用。然而,当我从父 View Controller 再次重新进入 View Controller 时,动画似乎不正确。

第一次导航栏以动画方式停留并消失,直到第二个 View 完全显示。然而,第二次及之后,导航栏完全消失,第二个 View 以动画显示。

我在这里创建了一个最小项目来显示问题:https://github.com/zwang/CVNavigationBarTest

问题重现步骤:

  1. 单击颜色 View Controller 中的代码块之一
  2. 点击后退按钮
  3. 再次单击其中一个代码块。
  4. 查看问题

第一次单击颜色 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/

相关文章:

ios - SWRevealViewController 中的推送 segue 无法正常工作

swift - 从满足条件的结构中提取值

swift - 无法将类型值转换为预期的 PFQueryArrayResultsBlock?

ios - 如何在 NS 字典中设置类对象

ios - 为什么每次在UITableViewController内部以不同的顺序显示我的核心数据?

iphone - 代码 'CodeSign error: code signing is required'

ios - 如何将十六进制值转换为 NSString?

iOS - 更改 UICollectionView 布局以填充行而不是列

arrays - 带有控件/实例的 Swift 数组

ios - 谷歌地图上的折线实时无法正常工作