【发布时间】:2021-11-21 11:28:00
【问题描述】:
在 iOS 15 上,当导航到具有透明导航栏的视图控制器时,透明栏的动画无法按预期工作。
但是,如果您使用透明导航栏导航回视图控制器,动画将按预期工作。
这就是我设置视图控制器的方式:
rootVC
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.backgroundColor = UIColor.red
self.navigationController?.navigationBar.standardAppearance = appearance
self.navigationController?.navigationBar.scrollEdgeAppearance = self.navigationController?.navigationBar.standardAppearance
第一VC
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
self.navigationController?.navigationBar.standardAppearance = appearance
self.navigationController?.navigationBar.scrollEdgeAppearance = self.navigationController?.navigationBar.standardAppearance
secondVC
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.backgroundColor = UIColor.yellow
self.navigationController?.navigationBar.standardAppearance = appearance
self.navigationController?.navigationBar.scrollEdgeAppearance = self.navigationController?.navigationBar.standardAppearance
请注意,在以下示例中,从 secondVC -> firstVC 而不是从 rootVC -> firstVC:
示例项目:https://github.com/karlingen/NavigationTest
任何想法为什么它会这样?
【问题讨论】:
-
在导航过程中更改导航栏透明度是不是有点不支持?它应该一直坐在那里。
-
@matt 为什么不支持它?除非我错过了什么,否则文档没有说什么?此外,这适用于 iOS
-
这就是为什么我说“有点”:)
-
透明和不透明导航栏之间的转换在 iOS 上一直很不稳定。我建议为此使用第三方库。我对这个有很好的经验:github.com/MoZhouqi/KMNavigationBarTransition
标签: ios uinavigationcontroller uinavigationbar ios15 uinavigationbarappearance