Skip to content

ITMeow/RainbowNavigation

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image1

RainbowNavigation

RainbowNavigation 是由Swfit2.0 编写的一个能够动态改变UINavigationBar背景色的组件。

功能

  • UINavigationBar背景色改为透明
  • UINavigationBar 增加类似MaterialDesign的深色StatusBar
  • UINavigationController在Push/Pop 时,背景色随动画过程进行改变
  • 手势拖拽进行UINavigationController的Pop行为

运行图

image1 image2 image3

基本需求

  • iOS 8.0+
  • Swift 2.0 +

安装

CocoaPods

在Podfile添加以下代码快速集成

pod 'RainbowNavigation

如何使用

设置UINavigationBar的背景色

如下代码能够直接设置UINavigationBar的背景色,并不会有iOS7之后UINavigationBar的色差问题。当把颜色设置为clearColor时,UINavigationBar的背景会透明。

navigationBar.ll_setBackgroundColor(UIColor.clearColor())

ll_setBackgroundColor带来的影响去掉

navigationBar.ll_reset() // 恢复默认,取消之前的颜色设置的影响

设置statusBar 遮罩颜色

navigationBar.ll_setStatusBarMaskColor(UIColor.blackColor().colorWithAlphaComponent(0.1))

UINavigationController集成RainbowNavigation

RainbowNavigation

最好统一使用ll_setBackgroundColor(color)这个方法,因为RainbowNavigation也是通过此方法对UINavigationBar的颜色进行设置的。

首先声明LLRainbowNavigation属性,然后通过wireTo方法将为其绑定对应的UINavigationController

lazy var rainbowNavigation = LLRainbowNavigation()
   override func viewDidLoad() {
        super.viewDidLoad()
        if let navController = self.navigationController {
            rainbowNavigation.wireTo(navigationController: navController)
        }
    }

LLRainbowColorSource

LLRainbowColorSource是一个protocol,所有的UIViewController都可以实现此协议。在RainbowNavigation绑定了一个UINavigationController之后,每次UINavigationController在进行PushPop操作时,都会检查栈顶的UIViewController是否实现了ColorSource协议,并且显示Protocol两个方法返回的对应的颜色。

@objc public protocol LLRainbowColorSource {
    optional func ll_navigationBarInColor() -> UIColor    // ViewController被Push进去的时候,UINavigationBar将转变的背景色
    optional func ll_navigationBarOutColor() -> UIColor   // ViewController被Pop出去的时候,UINavigationBar将转变的颜色
}

LLRainbowColorSource是可选的,可以不实现,此时UINavigationBar将保持原本的颜色。

Demo

RainbowNavigation的使用十分简单,可以通过下载demo项目来查看Gif图片显示的功能的实现方式。

Author

DanisFabric, [email protected]

License

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 54.6%
  • Shell 38.2%
  • Ruby 4.6%
  • Objective-C 2.6%