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/

  • 相关阅读:
    destoon系统模版中常用的变量,语法和标签
    destoon后台登录框不显示
    微信一键登录出现“redirect_uri 参数错误”
    destoon验证码不显示的问题或解决方法
    微信一键登录出现Scope 参数错误或没有 Scope 权限
    destoon发布信息标题重复不能发布信息
    第三方极验验证码
    微信关注二维码不显示
    dt产品调用大图中图,destoon
    禁用会员后同时禁用其发布的产品
  • 原文地址:https://www.cnblogs.com/ios122/p/4866983.html
Copyright © 2011-2022 走看看