RRNavigationBar 1.5

RRNavigationBar 1.5

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2021年4月

Moch Xiao 维护。



  • 作者:
  • Shaw

License CocoaPods Compatible Weibo Twitter

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 文件。

参考资料