我正在尝试重新创建 App Store 导航栏动画。我目前正在做的是根据滚动位置调整导航栏的 alpha。
问题是,当您向后滑动时,导航栏不会出现在上一个视图中,因此我在 viewWillDissapear 中将 alpha 设置回 1(如 gif 所示,这效果不佳)。
关于后退按钮,如果更改导航栏的 alpha,后退按钮也会受到影响。当导航栏不可见时,Apple 有一个不同的后退按钮(带箭头的圆圈),并且当导航栏出现时,该按钮会随着动画消失,并且出现默认的后退按钮。我不确定他们是否只是覆盖了一个新的。
这个问题之前已被问过,但接受的答案是使导航栏透明,然后在滚动时更改其不透明度。这不会产生相同的效果,因为默认导航栏不是白色而是半透明的,并且您还会丢失底部的边框线。
斯威夫特5
override func viewWillDisappear(_ animated: Bool) {
navigationController?.navigationBar.alpha = 1
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let currentVerticalOffset = scrollView.contentOffset.y
var percentageVerticalOffset = CGFloat() //currentVerticalOffset / maximumVerticalOffset
if currentVerticalOffset > collectionView.frame.size.height {
percentageVerticalOffset = currentVerticalOffset / currentVerticalOffset
self.title = "The Barn Owl"
//self.navigationItem.setHidesBackButton(false, animated: true)
} else {
percentageVerticalOffset = currentVerticalOffset / collectionView.frame.size.height
//self.navigationItem.setHidesBackButton(true, animated: true)
self.title = ""
}
// let color = UIColor.init(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: percentageVerticalOffset)
// navigationController?.navigationBar.backgroundColor = color
navigationController?.navigationBar.alpha = percentageVerticalOffset
}
您找到解决方案了吗?我也想做同样的事情。