Uses category to allow you change UINavigationBar appearance dynamically

ZSNavigationBar

ZSNavigationBar uses category to allow you change UINavigationBar appearance dynamically.(supported iOS 11+ and iPhone X)

Installation

CocoaPods

  • Swift:
  1. Add pod 'ZSNavigationBar' to your Podfile.
  2. Run pod install or pod update.
  3. Import ZSNavigationBar.
  • Objective-c:
  1. Add pod 'ZSNavigationBar-oc' to your Podfile.
  2. Run pod install or pod update.
  3. Import ZSNavigationBar.

Manually

  1. Add all files under Source-oc or Source-swift folder.
  2. Link with required frameworks: UIKit.
  3. If you use oc version, just import UINavigationBar+custom.h.

Requirements

  • iOS 8+
  • Xcode 9+
  • swift 3.0+
  • Objective-c

Usage

  • Swift:

The category includes several methods that helps to change UINavigationBar's appearance dynamically:

func setCustomBackgroundColor(_ backgroundColor: UIColor)
func setCustomTranslationY(translationY: CGFloat)
func reset()

And usually in viewWillDisappear, you should call this method to avoid any side effects:

override func viewWillDisappear(_ animated: Bool) {
  super.viewWillDisappear(animated)
  self.navigationController?.navigationBar.reset()
}
  • Objective-c:

First, import this lib:

#import "UINavigationBar+Custom.h"

The category includes several methods that helps to change UINavigationBar's appearance dynamically

- (void)zs_setBackgroundColor:(UIColor *)backgroundColor;
- (void)zs_setTranslationY:(CGFloat)translationY;
- (void)zs_reset;

And usually in viewWillDisappear, you should call this method to avoid any side effects:

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.navigationController.navigationBar zs_reset];
}

GitHub