动画导航栏从半透明到透明

时间:2015-10-03 13:29:56

标签: ios swift uinavigationcontroller

我想在推送segue期间将导航栏从半透明更改为透明,但它会立即变为透明。

我扩展了导航控制器:

    func setNavigationBarTransparent(transparent:Bool, animated:Bool) {

    // If current state of navigation bar is desired state then abort
    if barIsTransparent == transparent { return }

    // Reset transparency status
    barIsTransparent = transparent

    // Define transparency
    let image: UIImage? = transparent ? UIImage() : nil

    // Define animation
    let duration: NSTimeInterval = animated ? 0.3 : 0.0

    // Style navigation bar
    UIView.animateWithDuration(
        duration,
        animations: {
            self.navigationBar.setBackgroundImage(image, forBarMetrics: UIBarMetrics.Default)
            self.navigationBar.shadowImage = image
    })
}

我在目标视图控制器setNavigationBarTransparent(true, animated: true)中呼叫viewWillAppear。只要导航栏没有背景图像,条形透明度的转换在segue期间是平滑的,即它背后没有其它视图,因为它是半透明的。当我向上滚动集合视图以便在半透明导航栏后面有一个图像时,透明度突然发生,持续时间为零。

我在这里做错了什么?

更新:只是看到在反向segue期间,条形图实际上并没有将图像从透明变为半透明,但框架从上方滑入。因此,在半透明到透明的情况下,条形框架可以向上滑动到上方。 SEGUE。

0 个答案:

没有答案