Skip to content

Latest commit

 

History

History
111 lines (67 loc) · 4.39 KB

README_CN.md

File metadata and controls

111 lines (67 loc) · 4.39 KB

KMNavigationBarTransition

一个用来统一管理导航栏转场以及当 push 或者 pop 的时候使动画效果更加顺滑的通用库,并且同时支持竖屏和横屏。你不用为这个库写一行代码,所有的改变都悄然发生。

效果图

现在

KMNavigationBarTransition KMNavigationBarTransition

之前

KMNavigationBarTransition KMNavigationBarTransition

介绍

本库的设计理念是使用者只用关心当前 view controller 导航栏的背景样式,而不用在 push 或者 pop 的时候处理各种背景样式。

当 push 的时候本库会保存消失的 view controller 导航栏的背景样式,当 pop 回去后就会还原成以前的样式,因此你不用考虑 pop 后各种导航栏样式改变的情况。同时你也不必考虑 push 后的情况,因为这个是被 push 的 view controller 本身需要考虑的。

使用说明

使用本库时不用 import 任何头文件,全部通过 Method Swizzling 在底层做了处理。

推荐在所有 view controller 基类的 viewDidLoad 里设置默认的导航栏背景样式,当需要改变时,一般也只需要在当前 view controller 的 viewDidLoad 里去设置,但是如果你需要支持 3D Touch 的 peek 和 pop 手势,你可以在 viewWillAppear: 里去设置。

下面是一些设置导航栏背景样式的建议,具体的用法可以参见 Example。

  • 设置导航栏背景样式有两个方法,setBackgroundImage:forBarMetrics:setBarTintColor:。推荐使用前者,具体原因参见已知问题

  • translucent 这个属性的值在初始化后尽量不要随意修改,否则容易发生界面的布局错乱。

  • translucenttrue 时,可以用以下方法使导航栏背景透明:

    navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
    navigationController?.navigationBar.shadowImage = UIImage() // shadowImage 就是那根 1px 的细线
  • 当需要改变导航栏背景色的透明度时,可以改变 setBackgroundImage:forBarMetrics: 中 image 的 alpha 值。

  • 如果需要显示或隐藏导航栏,一般只需要在 viewWillAppear: 里设置,代码如下:

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.setNavigationBarHidden(hidden, animated: animated)
    }

    最好不要在 viewWillDisappear: 或者其他发生跳转的方法里去设置,这样不容易管理。还是那句宗旨,你只需要关心当前 view controller 导航栏的样式。

    当然最好还是不要隐藏导航栏,因为和系统边缘右滑返回手势一起使用可能会触发一些苹果的 bug。

安装

CocoaPods

你可以用以下命令来安装最新版的 CocoaPods:

$ gem install cocoapods

podfile 中添加以下代码:

pod 'KMNavigationBarTransition'

然后在终端运行以下命令:

$ pod install

Carthage

Carthage 是一个去中心化的包管理器工具。

你可以通过 Homebrew 用以下命令来安装 Carthage:

$ brew update
$ brew install carthage

Cartfile 中添加以下代码:

github "MoZhouqi/KMNavigationBarTransition"

运行 carthage update 命令来编译 framework 并且把编译好的 KMNavigationBarTransition.framework 文件拖入到 Xcode 工程中。

基本要求

  • iOS 7.0+

已知问题

在 iOS 8.2 或者之前的版本,如果导航栏的 translucent 值为 true 时,用 barTintColor 去设置导航栏的背景样式,然后改变 barTintColor 的颜色,那么当边缘左滑返回手势取消的时候导航栏的背景色会闪烁。

为了避免这种情况发生,推荐用 setBackgroundImage:forBarMetrics: 来改变导航栏的背景样式。

许可证

KMNavigationBarTransition 是基于 MIT 许可证下发布的,详情请参见 LICENSE。