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,你只需要这样即可

objective-c - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [[self rdv_tabBarController] setTabBarHidden:YES animated:YES]; }

  • 设置角标数

objective-c [[self rdv_tabBarItem] setBadgeValue:@"3"];

  • RDVTabBarControllerDelegate,相信你看就会明白,好的方法命名很重要啊~

``` objective-c /**

  • 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了;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动端开发

Telegram学习解析系列(二):这我怎么给后台传输数据?

写在前面:          在iOS开发的过程中,有很多时候我们都在和数据打交道,最基本的就是数据的下载和上传了,估计很多很多的小伙伴都在用AFNetwork...

27710
来自专栏哈雷彗星撞地球

iOS下WebRTC音视频通话(三)-音视频通话过程的分析补充

前两篇文章记录了音视频通话的一些概念和一些流程,以及一个局域网内音视频通话的示例。 今天以一个伪真实网络间的音视频通话示例,来分析WebRTC音视频通话的过程...

1026
来自专栏Rindew的iOS技术分享

解决iOS 10 之后调用拨号,系统弹窗延迟

1816
来自专栏猿人谷

1.注册或登录页面设计:UILabel,UIButton,UITextField

学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程...

1975
来自专栏码生

RN ReactNative 使用 MJRefresh 自定义刷新组件

RN 自带的 RefreshControl 是 UIRefreshControl,并且还自己写了自动偏移,存在有时不能回弹和不可以自定义视图的问题

864
来自专栏iOS 开发

省 市 区(县) 街道(乡) plist 文件

1362
来自专栏移动端开发

iOS 启动页后广告Demo

重点!       对于启动页后的广告,相信大家也都看到过很多很多的,比如我自己常看到的有 QQ音乐,爱奇艺了。你点击了APP,它会启动就会随之启动。。其实...

2798
来自专栏ios 技术积累

ios 一款集成方便的二维码扫描

做项目要用到二维码扫描,在git上搜索到了LBXScan开源库很不错,详细的可以下载demo,我只是使用了部分功能因此pod中只导入了

912
来自专栏谈补锅

自定义UITableViewCell实现左滑动多菜单功能LeftSwipe

1、使用自定义UITableViewCell + UISwipeGestureRecognizer + 代理 实现;

733
来自专栏Python疯子

Swift - 网页控件(UIWebView)加载本地数据,文件

使用UIWebView加载本地数据或资源有如下三种方式: 1,使用 **loadHTMLString **方法加载HTML内容 2,使用 **loadReq...

610

扫码关注云+社区