美文网首页iOS开发知识小集iOS
iOS 自定义导航栏组件

iOS 自定义导航栏组件

作者: Pircate | 来源:发表于2018-10-31 18:31 被阅读177次

    EachNavigationBar

    示例

    要运行示例项目,首先克隆 repo 并在 Example 目录运行 pod install

    版本要求

    • iOS 9.0
    • Swift 4.2

    安装

    EachNavigationBar 可通过 CocoaPods 或者 Carthage 安装, 简单的添加下面一行到你的 Podfile 或者 Cartfile:

    Podfile

    pod 'EachNavigationBar'
    

    Cartfile

    github "Pircate/EachNavigationBar"
    

    预览

    demo_new.gif demo_push.gif

    用法

    导入

    Swift

    import EachNavigationBar
    

    Objective-C

    @import EachNavigationBar;
    

    开启

    给当前导航栈的 viewControllers 添加一个独立的导航栏。

    只对当前导航栈有效,不影响其他导航栈。

    Swift

    let nav = UINavigationController(rootViewController: vc)
    nav.navigation.configuration.isEnabled = true
    

    Objective-C

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    nav.global_configuration.isEnabled = YES;
    

    设置

    导航栈全局配置

    更多配置请看这里

    Swift

    nav.navigation.configuration.titleTextAttributes = [.foregroundColor: UIColor.blue]
    nav.navigation.configuration.barTintColor = UIColor.red
    nav.navigation.configuration.shadowImage = UIImage(named: "shadow")
    nav.navigation.configuration.backImage = UIImage(named: "back")
    nav.navigation.configuration.setBackgroundImage(UIImage(named: "nav"), for: .any, barMetrics: .default)
    

    Objective-C

    nav.global_configuration.titleTextAttributes = @{NSForegroundColorAttributeName: UIColor.blueColor};
    nav.global_configuration.barTintColor = UIColor.redColor;
    nav.global_configuration.shadowImage = [UIImage imageNamed:@"shadow"];
    nav.global_configuration.backImage = [UIImage imageNamed:@"back"];
    [nav.global_configuration setBackgroundImage:[UIImage imageNamed:@"nav"] for:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    

    每个控制器设置

    普通设置

    Swift

    // 一般用法同系统组件
    navigation.bar  -> EachNavigationBar -> UINavigationBar
    navigation.item -> UINavigationItem
    
    // 隐藏导航栏
    navigation.bar.isHidden = true
    
    // 设置导航栏透明度
    navigation.bar.alpha = 0.5
    
    // 设置标题透明度
    navigation.bar.setTitleAlpha(0.5)
    
    // 设置 barButtonItem 透明度
    navigation.bar.setTintAlpha(0.5)
    // 如果 barButtonItem 是自定义视图
    navigation.item.leftBarButtonItem?.customView?.alpha = 0.5
    // 如果 barButtonItem 自定义了 tintColor
    navigation.item.leftBarButtonItem?.tintColor = navigation.item.leftBarButtonItem?.tintColor?.withAlphaComponent(0.5)
    
    // 移除毛玻璃效果
    navigation.bar.isTranslucent = false
    
    // 隐藏底部黑线
    navigation.bar.setShadowHidden(true)
    
    // 设置状态栏文字颜色
    navigation.bar.statusBarStyle = .lightContent
    
    // 如果想自定义导航栏位置,请将下面属性设为 true
    navinavigation.bar.isUnrestoredWhenViewWillLayoutSubviews = true
    
    // 导航栏额外高度
    navigation.bar.extraHeight = 14
    
    // 自定义返回按钮事件
    navigation.item.leftBarButtonItem?.action = #selector(backBarButtonAction)
    

    Objective-C

    self.each_navigationBar.xxx
    self.each_navigationItem.xxx
    
    大标题设置(iOS 11.0+)
    // 显示大标题
    if #available(iOS 11.0, *) {
        navigation.bar.prefersLargeTitles = true
    }
    // 隐藏大标题
    if #available(iOS 11.0, *) {
        navigation.bar.prefersLargeTitles = false
    }
    // 设置大标题透明度
    if #available(iOS 11.0, *) {
        navigation.bar.setLargeTitleAlpha(0.5)
    }
    

    对于 UITableViewController

    请在控制器释放的时候移除观察者

    deinit {
        removeObserverForContentOffset()
    }
    

    作者

    Pircate, gao497868860@163.com

    许可证

    EachNavigationBar 可在 MIT 许可证下使用。有关更多信息,请参阅许可证文件。

    相关文章

      网友评论

      本文标题:iOS 自定义导航栏组件

      本文链接:https://www.haomeiwen.com/subject/baxztqtx.html