Giter Club home page Giter Club logo

eachnavigationbar's Introduction

EachNavigationBar

CI Status Version Carthage compatible License iOS 8.0+

中文文档

Example

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

Requirements

  • iOS 8.0+
  • Swift 4

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

Swift

import EachNavigationBar

Objective-C

@import EachNavigationBar;

Setup

before window set rootViewController (Don't Forget)

Swift

UIViewController.setupNavigationBar

Objective-C

[UIViewController swizzle_setupNavigationBar];

To enable EachNavigationBar of a navigation controller

Swift

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

Objective-C

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
nav.global_configuration.isEnabled = YES;

Setting

Global

Swift

let nav = UINavigationController(rootViewController: vc)
nav.navigation.configuration.titleTextAttributes = [.foregroundColor: UIColor.blue]
nav.navigation.configuration.barTintColor = UIColor.red
nav.navigation.configuration.shadowImage = UIImage(named: "shadow")
nav.navigation.configuration.backImage = UIImage(named: "back")
nav.navigation.configuration.setBackgroundImage(UIImage(named: "nav"), for: .any, barMetrics: .default)

Objective-C

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
nav.global_configuration.titleTextAttributes = @{NSForegroundColorAttributeName: UIColor.blueColor};
nav.global_configuration.barTintColor = UIColor.redColor;
nav.global_configuration.shadowImage = [UIImage imageNamed:@"shadow"];
nav.global_configuration.backImage = [UIImage imageNamed:@"back"];
[nav.global_configuration setBackgroundImage:[UIImage imageNamed:@"nav"] for:UIBarPositionAny barMetrics:UIBarMetricsDefault];

Each view controller

Normal

Swift

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

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

// 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)

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

// hide bottom black line
navigation.bar.isShadowHidden = true

// if you need to set status bar style lightContent
navigationController?.navigationBar.barStyle = .black

// if you want change navigation bar position
navigation.bar.isUnrestoredWhenViewWillLayoutSubviews = true

// navigation bar extra height
navigation.bar.extraHeight = 14

// custom back action
navigation.item.leftBarButtonItem?.action = #selector(backBarButtonAction)

Objective-C

self.each_navigationBar.xxx
self.each_navigationItem.xxx
LargeTitle(iOS 11.0+)

Swift

// show
if #available(iOS 11.0, *) {
    navigation.bar.prefersLargeTitles = true
}
// hide
if #available(iOS 11.0, *) {
    navigation.bar.prefersLargeTitles = false
}
// alpha
if #available(iOS 11.0, *) {
    navigation.bar.setLargeTitleAlpha(0.5)
}

Objective-C

// show
if (@available(iOS 11.0, *)) {
    self.each_navigationBar.prefersLargeTitles = YES;
}
// hide
if (@available(iOS 11.0, *)) {
    self.each_navigationBar.prefersLargeTitles = NO;
}
// alpha
if (@available(iOS 11.0, *)) {
    [self.each_navigationBar setLargeTitleAlpha:0.5];
}

Adjusts UIScrollView contentInset

Swift

adjustsScrollViewContentInset(scrollView)

Objective-C

[self adjustsScrollViewContentInset:self.scrollView];

For UITableViewController

Must remove observer when deinit

Swift

deinit {
    removeObserverForContentOffset()
}

Objective-C

- (void)dealloc {
    [self removeObserverForContentOffset];
}

Author

Pircate, [email protected]

License

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

eachnavigationbar's People

Contributors

pircate avatar

Watchers

James Cloos avatar Y-JK avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.