A library that helps to manage the navigation bar style. It helps to remember bar attributes between different VCs and keep the transition smooth.
NavigationBarHelper.load()
swizzle UIViewController.viewSafeAreaInsetsDidChange
swizzle UIViewController.viewWillLayoutSubviews
swizzle UIViewController.viewWillAppear(_:)
UINavigationBar.hitTest(_:with:)
override func viewDidLoad() {
super.viewDidLoad()
barBackgroundHelper.perform {
//Codes for navigation bar update.
//e.g. $0.tintColor = UIColor.white
}
}
After calling the function above, any attribute (background image/tintColor/barTintColor/barStyle etc) will be remembered by the library. It will create a mirror background view of the navigation bar (auto managed) and clear the bar background (to provide a smooth transition). Any change to the navigation bar background (background image/barTintColor/barStyle/shadowImage) in the closure will be syncronized with the mirror view.
- willRestore(backgroundAttr: inout NavigationBarHelper.BackgroundAttr)
Called before the mirror view capturing the bar's background attribute. Modify the backgroundAttr if it is not your appetite.
- didRestore(backgroundAttr: NavigationBarHelper.BackgroundAttr)
Called after the mirror view capturing the bar's background attribute. It is the best time for you to do additional change to the bar's background attr. After this function is called, the mirror background view will synchronize with the bar's background.
- willRestore(foregroundAttr: inout NavigationBarHelper.ForegroundAttr)
Called before the navigation bar's foreground attribute being restored, especially when the viewController's appearing. Modify the foregroundAttr if it is not your appetite.
- didRestore(foregroundAttr: NavigationBarHelper.ForegroundAttr)
Called after the navigation bar's foreground attribute being restored, especially when the viewController's appearing. Do additional change if you have modified the navigation bar out of the performNavigationBarUpdates scope.(e.g, you have set the bar tint color according to scrollview offset).
(MIT license)