zoukankan      html  css  js  c++  java
  • RDVTabBarController--可自由定制的iOS底部导航控件

    • RDVTabBarController:一个十分完善的tabBarController,可以自定义角标个数,爽的停不下来。
    • RDVTabBarController地址:RDVTabBarController
    • Demo地址:欢迎Star

    说明

    • 此教程是旨在让你快速入手,如需更加深层次的了解,请直接RDVTabBarController地址分析即可;

    使用

    pod 'RDVTabBarController'
    

    建议直接CocoaPods管理,对CocoaPods有兴趣的童鞋可以戳cocoapods-install-usage

    结构

    RDVTabBar 
    @interface RDVTabBar : UIView
    
    RDVTabBarController
    @interface RDVTabBarController : UIViewController 
    
    RDVTabBarItem
    @interface RDVTabBarItem : UIControl
    

    RDVTabBarController Example Usage其实已经很详细了,接下来看初始化

     //VString宏定义,为了就是更好的国际化语言,适配多语言,刚好此Demo也国际化了,可以参看https://github.com/sauchye/dev_notes/issues/4 
    #define VString(x)      NSLocalizedString(x, nil)
    
    - (void)setupViewControllers{
        SYFirstViewController *firstVC = [[SYFirstViewController alloc] init];
        SYSecondViewController *secondVC = [[SYSecondViewController alloc] init];
        SYThirdViewController *thirdVC = [[SYThirdViewController alloc] init];
        firstVC.title = VString(@"Home");
        secondVC.title = VString(@"Found");
        thirdVC.title = VString(@"Me");
        self.firstNav = [[SYBaseNavigationController alloc] initWithRootViewController:firstVC];
        self.secondNav = [[SYBaseNavigationController alloc] initWithRootViewController:secondVC];
        self.thirdNav = [[SYBaseNavigationController alloc] initWithRootViewController:thirdVC];
        [self setViewControllers:@[self.firstNav, self.secondNav, self.thirdNav]];
        [self customizeTabBarForController];
    }
    
    - (void)customizeTabBarForController{
    
        //tabbar 背景图片 tabbar_background
        UIImage *backgroundImage = [UIImage imageNamed:@"tabbar_background"];
        //选项卡图片
        NSArray *tabBarItemImages;
      	//这里添加tabBar icon图片
        //= @[VString(@"First"), VString(@"Second"),VString(@"Third")];
    
        NSArray *tabBarItemTitles = @[VString(@"Home"), VString(@"Found"), VString(@"Me")];
        NSInteger index = 0;
        for (RDVTabBarItem *item in [[self tabBar] items])
        {
            item.titlePositionAdjustment = UIOffsetMake(0, 2.0);
            [item setBackgroundSelectedImage:backgroundImage withUnselectedImage:backgroundImage];
            UIImage *selectedimage = [UIImage imageNamed:[NSString stringWithFormat:@"%@_selected",[tabBarItemImages objectAtIndex:index]]];
    
            UIImage *unselectedimage = [UIImage imageNamed:[NSString stringWithFormat:@"%@_normal",[tabBarItemImages objectAtIndex:index]]];
    
            [item setFinishedSelectedImage:selectedimage withFinishedUnselectedImage:unselectedimage];
    
            [item setTitle:[tabBarItemTitles objectAtIndex:index]];
            item.selectedTitleAttributes = @{
                                             NSFontAttributeName: [UIFont boldSystemFontOfSize:12],
                                             NSForegroundColorAttributeName:kNAVIGATION_BAR_COLOR,
                                             };
            item.unselectedTitleAttributes = @{
                                               NSFontAttributeName: [UIFont boldSystemFontOfSize:12],
                                               NSForegroundColorAttributeName:RGB(217, 217, 217),
                                               };
    
            [item setTitle:[tabBarItemTitles objectAtIndex:index]];
            index++;
    
        }
    }
    

    这样你的tabBar基本搭建好了,但是还需要完善一些,比如,角标设置,push隐藏等。

    • Push隐藏tabBar,你只需要这样即可

      - (void)viewWillAppear:(BOOL)animated{
          [super viewWillAppear:animated];
          [[self rdv_tabBarController] setTabBarHidden:YES animated:YES];
      }
      
    • 设置角标数

       [[self rdv_tabBarItem] setBadgeValue:@"3"];
      
    • RDVTabBarControllerDelegate,相信你看就会明白,好的方法命名很重要啊~

      /**
       * Asks the delegate whether the specified view controller should be made active.
       */
      - (BOOL)tabBarController:(RDVTabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
      
      /**
       * Tells the delegate that the user selected an item in the tab bar.
       */
      - (void)tabBarController:(RDVTabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
      
    • 还有需要多等待你去发现...


    结语

    RDVTabBarController是一个很棒的第三方tabBarController,值得我们学习和思考。

    • 相比传统第三方,你会发现可以很好的定制角标,这是极好的,当然你也可以自定义;
    • 但是不能定义中间凸起的tabBar,好早之前去哪儿就是中间凸起一个tabBar,不过现在去哪儿也改成传统的tabBar了;

    --

    本文,由我们 iOS122 的小伙伴 @Sauchye​供稿,更多讨论,参见: http://www.ios122.com/tag/rdvtabbarcontroller/

  • 相关阅读:
    MySQL练习题
    InnoDB存储引擎+显示数据库引擎
    EMP+DEPT+SALGRADE 表的基本操作2
    EMP+DEPT+SALGRADE 表的基本操作1
    Git的使用
    JavaScript动画实例:旋转的正三角形
    JavaScript动画实例:曲线的绘制
    JavaScript动画实例:螺旋线
    JavaScript图形实例:阿基米德螺线
    JavaScript图形实例:平面镶嵌图案
  • 原文地址:https://www.cnblogs.com/ios122/p/4866983.html
Copyright © 2011-2022 走看看