我试图实现苹果的详细屏幕从他们的播客,音乐,和应用程序商店的应用程序。导航栏开始透明,然后增加阿尔法进一步向下滚动。
我通过改变navigationBar本身的alpha值达到了预期的效果。然而,这也会影响navigationBar中的按钮。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
var offset = scrollView.contentOffset.y / 350
if offset > 1 {
offset = 1
self.navigationController?.navigationBar.alpha = offset
self.navigationItem.setHidesBackButton(false, animated: false)
} else {
self.navigationController?.navigationBar.alpha = offset
self.navigationItem.setHidesBackButton(true, animated: false)
}
}
字符串
我觉得我也需要改变
1.导航栏的backgroundColor
1.导航栏的bartTintColor
在实施上述各项并替换时:
self.navigationController?.navigationBar.alpha = offset
型
与
self.navigationController?.navigationBar.barTintColor = Color.background?.withAlphaComponent(offset)
型
或
self.navigationController?.navigationBar.backgroundColor = Color.background?.withAlphaComponent(offset)
型
动画没有过渡,它只是从透明到不透明。
我正在使用iOS 13方法在此控制器上设置导航栏
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
self.navigationController?.navigationBar.standardAppearance = appearance
型
1条答案
按热度按时间c90pui9n1#
要在保持按钮可见性的同时实现平滑过渡导航栏的预期效果,您可以考虑对背景使用Alpha调整并单独操纵按钮的可见性。
我给你个建议
字符串
这将背景透明度的处理(使用淡入淡出动画以实现更平滑的过渡)与导航栏alpha的调整分开,以保持按钮的可见性。根据需要调整动画的持续时间(animate(withDuration:0.3)),以获得所需的效果。