FLNavigationBar 2.0.1

FLNavigationBar 2.0.1

ForterLi 维护。




  • liyongqiang

FLNavigationBar

一个用于统一管理导航栏切换以及使动画效果更平滑的通用库,同时支持竖屏和横屏。它能够应对复杂的场景变化,同时兼顾原生NavigationBar的使用习惯

效果图

功能 示例
颜色 -> 颜色
单独的条形 -> 单独的条形
颜色 -> 图像条形
隐藏 -> 模糊效果轻

介绍

本库的设计理念是用户只需关心当前 view controller 导航栏的背景样式,在当前 view controller 的 UINavigationItem 中配置页面导航栏样式。

使用说明

导航栏样式

typedef NS_ENUM(NSInteger, FLBarStyle) {
    FLBarStyleNone = 0,               // 公共样式
    FLBarStyleDefault = 0xff,         // 默认毛玻璃效果
    FLBarStyleColor,                  // 颜色
    FLBarStyleTransparent,            // 透明
    FLBarStyleHidden,                 // 隐藏
    FLBarStyleTranslucent,            // 毛玻璃效果可以修改样式
};

typedef NS_ENUM(NSInteger, FLBlurEffectStyle) {
    FLBlurEffectStyleNone = 0,
    FLBlurEffectStyleExtraLight,
    FLBlurEffectStyleLight,
    FLBlurEffectStyleDark,
    FLBlurEffectStyleRegular API_AVAILABLE(ios(10.0)),
    FLBlurEffectStyleProminent API_AVAILABLE(ios(10.0)),
};

建议在 navigation controller 中配置导航栏默认样式,如果不配置,则默认为 FLBarStyleDefault 半透明样式

    override func loadView() {
        super.loadView()
        self.barStyle = .color
        self.barBackgroundColor = UIColor.white
        self.barLineColor = UIColor.white
        self.barStyleUpdate()
    }

在每一个 view controller 中配置每个页面的样式

    // MARK: - Life Cycle
    override func loadView() {
        super.loadView()
        self.navigationItem.yq_barStyle = .color
        self.navigationItem.yq_barLineColor = .red
        self.navigationItem.yq_barBackgroundColor = .yellow
    }

为每个 view controller 单独配置页面独有的 NavigationBar

    override func viewDidLoad() {
        super.viewDidLoad()
        addAloneBarNavigationBar()
    }
    
    override func viewDidLayoutSubviews() {
        aloneBarViewDidLayoutSubviews()
    }
    // 当前Alone bar 与 UINavigationBar 一样,无法使用yq_barStyle、yq_barLineColor、yq_barBackgroundColor等扩展属性
    self.alone_barNavigationBar
    // 等价 self.navigationItem
    self.alone_navigationItem

自定义 NavigationController

class FLCustomNavigationController : UINavigationController,UINavigationControllerDelegate {
    override func loadView() {
        super.loadView()
        self.delegate = self
    }
    
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        self.startBar()
    }
    
    func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
        self.endBar(viewController)
    }
}

安装

CocoaPods

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

$ gem install cocoapods

podfile 中添加以下代码:

pod 'FLNavigationBar'

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

$ pod install

基本要求

  • iOS 8.0+

许可证

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

更新

  • ViewController 单独控制侧滑 全屏侧滑 pop
  • 兼容 Large Mode
  • 兼容 prompt title
  • 适配 iOS 13 暗黑模式
  • 优化导航栏左右item间距的处理

联系方式