Build Status

NavigationBarHelper

一个用于管理导航栏样式的库。 它可以帮助记住不同 VC 之间的栏属性,并保持过渡平滑。

alt tag

用法

当您的应用程序启动完成后,调用以下函数以启动该助手。

NavigationBarHelper.load()

替换 UIViewController.viewSafeAreaInsetsDidChange

替换 UIViewController.viewWillLayoutSubviews

替换 UIViewController.viewWillAppear(_:)

UINavigationBar.hitTest(_:with:)

对于一个 viewController,使用以下函数来修改导航栏。

override func viewDidLoad() {
    super.viewDidLoad()
    barBackgroundHelper.perform {
        //Codes for navigation bar update.
        //e.g. $0.tintColor = UIColor.white
    }
}

调用上述函数后,任何属性(背景图片/tintColor/barTintColor/barStyle 等)都将被该库记住。 它将创建一个导航栏的镜像背景视图(自动管理),并清除栏背景(以提供平滑的过渡)。 对闭包中导航栏背景的任何更改(背景图片/barTintColor/barStyle/shadowImage)都将与镜像视图同步。

协议 NavigationBarHelperDelegate

在镜像视图捕获栏的背景属性之前调用。 如果背景属性不符合您的期望,请修改它。

在镜像视图捕获栏的背景属性之后调用。 这是您对栏的背景属性进行额外更改的最佳时机。 在此函数被调用后,镜像背景视图将与栏的背景同步。

在导航栏的前景属性被恢复之前调用,尤其是在 viewController 显示时。 如果前景属性不符合您的期望,请修改它。

在导航栏的前景属性被恢复之后调用,尤其是在 viewController 显示时。 如果您在 performNavigationBarUpdates 范围之外修改了导航栏(例如,您已根据 scrollview 偏移量设置了栏颜色),请进行额外的更改。

许可证

(MIT 许可证)