过渡期间导航栏右侧的UI故障(黑色闪烁)

时间:2015-02-22 08:55:36

标签: ios swift uinavigationbar uiviewanimation uinavigationitem

我有一个应用程序,它有一个uipageviewcontroller,在应用程序的初始启动时显示。在uipageviewcontroller的最后一页,我向主导航控制器提供了TransitionCrossDissolve动画。 当动画正在进行中时,我在导航栏的右侧会出现一个小小的黑色背景闪烁,如下所示:

uinavigationbar transition

一开始我整个导航栏上都有黑色闪烁,但是在调用

之后
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController?.navigationBar.layer.removeAllAnimations()

}
问题几乎消失了。

在调用removeAllAnimations()之前,她是问题的GIF:

enter image description here

这是我如何在uipageviewcontroller的最后一页上调用动画:

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate

UIView.transitionWithView(appDelegate.window!, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve , animations: { () in

        appDelegate.window!.rootViewController = appDelegate.mainNavigationController

}, completion: nil)

重要的是,我没有使用程序来移除导航栏底部的细线。这可能是所有这一切的原因吗​​?

价: How to hide iOS7 UINavigationBar 1px bottom line

我非常感谢有关此问题的任何反馈。

Brgds

1 个答案:

答案 0 :(得分:2)

通过删除导航栏所有子视图上的动画,我能够删除黑色UI故障。我认为问题在于正确的UINavigationItem。 这是我使用的代码:

let subviews = (self.navigationController?.navigationBar.subviews as [UIView])
    for subview: UIView in subviews {
        subview.layer.removeAllAnimations()
    }