中文介绍
KMNavigationBarTransition这是一个即用型通用库,帮助您管理导航栏样式,并在推送或弹出视图控制器时,在不同的导航栏样式之间提供平滑的过渡动画。而您无需写任何代码,所有操作都是自动完成的。
截图
现在
之前
介绍
该库的设计理念是,你只需关心当前视图控制器中导航栏的背景样式,无需处理在推送或弹出时的一系列背景样式。
该库可以在推送时捕获消失的视图控制器中导航栏的背景样式,当你弹出返回到视图控制器时,导航栏将恢复之前的样式,因此你无需考虑弹出后的背景样式。同样,推送后也不需要考虑,因为需要关心的观点控制器将被推送。
用法
使用此库时不需要导入任何头文件,该库使用方法交换来实现效果。
建议在基视图控制器的viewDidLoad
方法中设置导航栏的默认背景样式。当需要更改它时,一般只需要在当前视图控制器的viewDidLoad
方法中执行,但如果你需要支持3D Touch的预览和弹出,你可以在viewWillAppear:
方法中执行。
以下是一些设置导航栏背景样式的建议,你可以详细了解示例。
-
有两种方法可以设置导航栏背景样式,
setBackgroundImage:forBarMetrics:
和setBarTintColor:
。建议使用前者,更多详情请查看已知问题。 -
在初始化后最好不要随意更改
translucent
属性的值,否则接口布局易产生混淆。 -
当
translucent
属性的值为true
时,可以使用以下方法使导航栏透明navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) navigationController?.navigationBar.shadowImage = UIImage() // shadowImage is the 1px line
-
你可以通过修改
setBackgroundImage:forBarMetrics:
方法中图像的alpha值来修改导航栏背景色的alpha值。 -
你可以使用以下方法在
viewWillAppear:
中显示或隐藏导航栏override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) navigationController?.setNavigationBarHidden(hidden, animated: animated) }
最好不要在
viewWillDisappear:
或其他执行动画转换的方法中这样做,因为这很难管理。再次强调,你只需关心当前视图控制器中的导航栏样式。当然,最好不要隐藏导航栏,这可能会触发一些与Apple的交互式弹出手势相关的bug。
安装
CocoaPods
您可以使用以下命令安装CocoaPods的最新版本。
$ gem install cocoapods
只需将以下行添加到Podfile中。
pod 'KMNavigationBarTransition'
然后,运行以下命令。
$ pod install
Carthage
Carthage 是一个去中心化的依赖管理器,它构建您的依赖,并为您提供二进制框架。
您可以使用以下命令通过 Homebrew 安装Carthage。
$ brew update
$ brew install carthage
要使用Carthage在Xcode项目中集成KMNavigationBarTransition,请在您的 Cartfile
中指定它。
github "MoZhouqi/KMNavigationBarTransition"
运行 carthage update
命令来构建框架,并将构建好的 KMNavigationBarTransition.framework
拖到Xcode项目中。
要求
- iOS 7.0+
已知问题
在iOS 8.2或以下版本中,如果将translucent
属性的值设置为true
,并为背景颜色设置barTintColor
,然后更改barTintColor
,当交互式过渡被取消时,导航栏的背景颜色将闪烁。
为了避免这种情况发生,建议使用 setBackgroundImage:forBarMetrics:
代替 setBarTintColor:
来更改导航栏的背景颜色。
许可
KMNavigationBarTransition遵循MIT许可发布。详情见LICENSE文件。