我想在推送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。