qq_33809905 2016-01-27 09:48 采纳率: 75%
浏览 3226
已采纳

ios的tabbar问题求详细解答,这个tabbar下面的图标突出一块怎么做的。谢谢各位大神。

图片

  • 写回答

5条回答

  • 莫小言mo 2016-03-03 06:21
    关注

    自己自定义一个标签视图控制器吧:
    自定义一个类继承自UITabBarController;
    然后在该类的.m文件中自己写button和其点击事件间的切换

    #import "MyTabBarController.h"

    #define WIDTH (myView.frame.size.width / 4)
    #define HEIGHT (myView.frame.size.height)

    @interface MyTabBarController ()

    //之前选中的按钮
    @property(nonatomic, retain) UIButton *selectedBtn;

    @end

    @implementation MyTabBarController

    • (void)viewDidLoad {
      [super viewDidLoad];
      //删除现有的tabBar
      CGRect rect = self.tabBar.frame;
      [self.tabBar removeFromSuperview];

      //添加自己的视图
      UIView *myView = [[BaseView alloc] init];
      myView.backgroundColor = [UIColor whiteColor];
      myView.frame = rect;
      [self.view addSubview:myView];

      //主页发现按钮
      UIButton *findBtn = [UIButton buttonWithType:UIButtonTypeCustom];
      [findBtn setImage:[UIImage imageNamed:@"icon_home_n"] forState:UIControlStateNormal];
      [findBtn setImage:[UIImage imageNamed:@"icon_home_h"] forState:UIControlStateSelected];
      findBtn.tag = 1;
      findBtn.frame = CGRectMake(0, -20, WIDTH, HEIGHT); //y设成负值,高再设高一点就好了!!!
      //默认选中是发现按钮
      findBtn.selected = YES;
      [findBtn setTintColor:[UIColor colorWithRed:0.886 green:0.365 blue:0.247 alpha:1.000]];
      self.selectedBtn = findBtn;
      [myView addSubview:findBtn];

      UILabel *findLabel = [[UILabel alloc] initWithFrame:CGRectMake(WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
      findLabel.text = @"发现";
      findLabel.textColor = [UIColor colorWithRed:0.804 green:0.325 blue:0.227 alpha:1.000];
      findLabel.font = [UIFont systemFontOfSize:10];
      findLabel.tag = 101;
      [myView addSubview:findLabel];
      [findLabel release];

      //搜索页
      UIButton *searchBtn = [UIButton buttonWithType:UIButtonTypeCustom];
      [searchBtn setImage:[UIImage imageNamed:@"icon_search_n"] forState:UIControlStateNormal];
      [searchBtn setImage:[UIImage imageNamed:@"icon_search_h"] forState:UIControlStateSelected];
      searchBtn.tag = 2;
      searchBtn.frame = CGRectMake(WIDTH, -20, WIDTH, HEIGHT);
      [myView addSubview:searchBtn];

      UILabel *searchLabel = [[UILabel alloc] initWithFrame:CGRectMake(WIDTH + WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
      searchLabel.text = @"搜索";
      searchLabel.textColor = [UIColor grayColor];
      searchLabel.font = [UIFont systemFontOfSize:10];
      searchLabel.tag = 102;
      [myView addSubview:searchLabel];
      [searchLabel release];

      //收藏页
      UIButton *costBtn = [UIButton buttonWithType:UIButtonTypeCustom];
      [costBtn setImage:[UIImage imageNamed:@"iconfont-like"] forState:UIControlStateNormal];
      [costBtn setImage:[UIImage imageNamed:@"iconfont-like-selected"] forState:UIControlStateSelected];
      costBtn.tag = 3;
      costBtn.frame = CGRectMake(2 * WIDTH, -20, WIDTH, HEIGHT);
      [myView addSubview:costBtn];

      UILabel *collectLabel = [[UILabel alloc] initWithFrame:CGRectMake(2 * WIDTH + WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
      collectLabel.text = @"收藏";
      collectLabel.textColor = [UIColor grayColor];
      collectLabel.font = [UIFont systemFontOfSize:10];
      collectLabel.tag = 103;
      [myView addSubview:collectLabel];
      [collectLabel release];

      //设置页
      UIButton *setUpBtn = [UIButton buttonWithType:UIButtonTypeCustom];
      [setUpBtn setImage:[UIImage imageNamed:@"icon_setting_n"] forState:UIControlStateNormal];
      [setUpBtn setImage:[UIImage imageNamed:@"icon_setting_h"] forState:UIControlStateSelected];
      setUpBtn.tag = 4;
      setUpBtn.frame = CGRectMake(3 * WIDTH, -20, WIDTH, HEIGHT);
      [myView addSubview:setUpBtn];

      UILabel *setUpLabel = [[UILabel alloc] initWithFrame:CGRectMake(3 * WIDTH + WIDTH/2 -10, HEIGHT - 20, WIDTH, 20)];
      setUpLabel.text = @"设置";
      setUpLabel.textColor = [UIColor grayColor];
      setUpLabel.font = [UIFont systemFontOfSize:10];
      setUpLabel.tag = 104;
      [myView addSubview:setUpLabel];
      [setUpLabel release];

      for (int i = 1; i <4; i++) {
      UIButton *btn = [self.view viewWithTag:i];
      [btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
      }
      }

    #pragma mark -- 自定义tabBar按钮的点击事件
    -(void)clickBtn:(UIButton *)sender {
    //设置上一个按钮
    self.selectedBtn.selected = NO;
    UILabel *titleFormer = [self.view viewWithTag:self.selectedBtn.tag + 100];
    titleFormer.textColor = [UIColor grayColor];

    //设置选中状态
    sender.selected = YES;
    self.selectedBtn = sender;
    UILabel *titleNow = [self.view viewWithTag:self.selectedBtn.tag + 100];
    titleNow.textColor = [UIColor colorWithRed:0.804 green:0.325 blue:0.227 alpha:1.000];
    
    //跳转相应的视图控制器
    self.selectedIndex = sender.tag - 1;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)