一个用于管理导航栏样式的库。 它可以帮助记住不同 VC 之间的栏属性,并保持过渡平滑。
NavigationBarHelper.load()
替换 UIViewController.viewSafeAreaInsetsDidChange
替换 UIViewController.viewWillLayoutSubviews
替换 UIViewController.viewWillAppear(_:)
UINavigationBar.hitTest(_:with:)
override func viewDidLoad() {
super.viewDidLoad()
barBackgroundHelper.perform {
//Codes for navigation bar update.
//e.g. $0.tintColor = UIColor.white
}
}
调用上述函数后,任何属性(背景图片/tintColor/barTintColor/barStyle 等)都将被该库记住。 它将创建一个导航栏的镜像背景视图(自动管理),并清除栏背景(以提供平滑的过渡)。 对闭包中导航栏背景的任何更改(背景图片/barTintColor/barStyle/shadowImage)都将与镜像视图同步。
在镜像视图捕获栏的背景属性之前调用。 如果背景属性不符合您的期望,请修改它。
在镜像视图捕获栏的背景属性之后调用。 这是您对栏的背景属性进行额外更改的最佳时机。 在此函数被调用后,镜像背景视图将与栏的背景同步。
在导航栏的前景属性被恢复之前调用,尤其是在 viewController 显示时。 如果前景属性不符合您的期望,请修改它。
在导航栏的前景属性被恢复之后调用,尤其是在 viewController 显示时。 如果您在 performNavigationBarUpdates 范围之外修改了导航栏(例如,您已根据 scrollview 偏移量设置了栏颜色),请进行额外的更改。
(MIT 许可证)