RRNavigationBar
将 UINavigationBar
添加到 UIViewController
。
介绍
KMNavigationBarTransition 提供了一种优雅的方法来处理 navigationBar
过渡,并且无需修改代码,非常棒。
以下是我使用KMNavigationBarTransition 时无法很好地处理的情况:首页是一个产品列表,点击产品行,推送到产品详情页面,需要透明的 navigationBar
,而您在滚动时,它可以恢复到默认的 navigationBar
的外观。继续推送到下一页,navigationBar
需要看起来像第一个页面,这是默认的外观。(如下面的 1st gif 所示。)
简单来说,我想要的只影响当前视图控制器中的 navigationBar
的外观变化。
需求
- iOS 7.0+
我的工作环境是 iOS 11.0 & Xcode 9,理论上最低支持版本是 iOS7,未经测试确认。
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。
可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 将 RRNavigationBar 集成到您的 Xcode 项目中,请在其 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'RRNavigationBar'
然后,运行以下命令
$ pod install
在安装任何来自 CocoaPods 的内容后,您应该打开 {Project}.xcworkspace
而不是 {Project}.xcodeproj
。
使用方法
在 UIViewController 子类中 viewDidLoad
方法中
self.rr_navigationBar.xxx = newValue;
如果 viewController 的视图被激活,则立即生效,否则在调用 viewWillLayoutSubviews
时生效。
有关更多信息,请查看项目中的演示。
支持的方法
barStyle
translucent
tintColor
barTintColor
backgroundColor
shadowImage
setBackgroundImage:forBarMetrics
alpha
backIndicatorImage
backIndicatorTransitionMaskImage
titleTextAttributes
rr_forceShadowImageHidden
一旦设置,尽量不要更改 translucent
属性,这可能会导致动画完成与扩展容器 ViewController 的视图 backgroundColor 后出现导航栏闪烁。
特别是在 iOS 11 中,它会在 (push) 动画期间和 ViewController 的 contentView(UIScrollView) 弹跳时导致导航栏损坏。
设置 hidden
属性将不会有任何效果,尝试使用 setBackgroundImage:forBarMetrics:
和 shadowImage
使导航栏不可见。
如果您不希望特定 UINavigationController
受影响,可以使用这些方法执行它。
RRNavigationBarExcludeImpactBehaviorForClass
RRNavigationBarExcludeImpactBehaviorForInstance
此外,您可以通过操作 ViewController 的属性 rr_interactivePopGestureRecognizerDisabled
来启用/禁用 pop 交互动画。
许可证
RRNavigationBar
适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。