eac

EachNavigationBar

A custom navigation bar for each view controller.

Showing:

Popularity

Downloads/wk

0

GitHub Stars

364

Maintenance

Last Commit

2d ago

Contributors

2

Package

Dependencies

0

License

MIT

Categories

Readme

EachNavigationBar

Lint Version Carthage compatible License Platform 中文文档

中文文档

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

  • iOS 9.0
  • Swift 4.2

Installation

EachNavigationBar is available through CocoaPods or Carthage. To install it, simply add the following line to your Podfile or Cartfile:

Podfile

pod 'EachNavigationBar'

Cartfile

github "Pircate/EachNavigationBar"

Overview

Usage

Import

import EachNavigationBar

Enable

let nav = UINavigationController(rootViewController: vc)
nav.navigation.configuration.isEnabled = true

Setting

Global

nav.navigation.configuration.titleTextAttributes = [.foregroundColor: UIColor.blue]

nav.navigation.configuration.barTintColor = UIColor.red

nav.navigation.configuration.shadowImage = UIImage(named: "shadow")

nav.navigation.configuration.setBackgroundImage(UIImage(named: "nav"), for: .any, barMetrics: .default)

nav.navigation.configuration.backItem = UINavigationController.Configuration.BackItem(style: .title("返回"))

nav.navigation.configuration.prefersLargeTitles = true

nav.navigation.configuration.largeTitle.displayMode = .always

Each view controller

Normal
navigation.bar  -> EachNavigationBar -> UINavigationBar
navigation.item -> UINavigationItem

// hide navigation bar
navigation.bar.isHidden = true

// remove blur effect
navigation.bar.isTranslucent = false

// hides shadow image
navigation.bar.isShadowHidden = true

// set status bar style
navigation.bar.statusBarStyle = .lightContent

// if you want change navigation bar position
navigation.bar.automaticallyAdjustsPosition = false

// item padding
navigation.bar.layoutPaddings = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8)

// shadow
navigation.bar.shadow = Shadow(
    color: UIColor.black.cgColor,
    opacity: 0.5,
    offset: CGSize(width: 0, height: 3)
)

Alpha

// set bar alpha
navigation.bar.alpha = 0.5

// set title alpha
navigation.bar.setTitleAlpha(0.5)

// set barButtonItem alpha
navigation.bar.setTintAlpha(0.5)
// if barButtonItem is customView
navigation.item.leftBarButtonItem?.customView?.alpha = 0.5
// if barButtonItem customized tintColor
navigation.item.leftBarButtonItem?.tintColor = navigation.item.leftBarButtonItem?.tintColor?.withAlphaComponent(0.5)

Additional height or view

// navigation bar additional height
navigation.bar.additionalHeight = 14

// navigation bar additional view
navigation.bar.additionalView = UIView()

BackBarButtonItem

// set back bar button item
navigation.bar.backBarButtonItem = .init(style: .title("Back"), tintColor: .red)

// allow back
navigation.bar.backBarButtonItem.shouldBack = { item in
    // do something
    return false
}

// handler before back
navigation.bar.backBarButtonItem.willBack = {
    // do something
}

// handler after back
navigation.bar.backBarButtonItem.didBack = {
    // do something
}

LargeTitle(iOS 11.0+)

// enable
navigation.bar.prefersLargeTitles = true

// display mode
navigation.item.largeTitleDisplayMode = .always

// alpha
navigation.bar.setLargeTitleAlpha(0.5)

Author

Pircate, gao497868860@163.com

License

EachNavigationBar is available under the MIT license. See the LICENSE file for more info.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100