IOS_自定义tabbar

 我们为什么要自定义tabBar?

我们先来看下系统自带的tabBar.:IOS7

是不是很丑,而且IOS6和IOS7的tabBar都还不一样,我们在来看一下IOS6的TABBAR

我们可以看到,太丑了.

我们的解决方法是:

1.新建一个View覆盖这个Tabbar,

 

看代码实现:

     // 1.先获取系统Tabbar的frame
     CGRect frame = self.tabBar.frame; // 2.自定义视图,这个视图是我已经封装过的,传入bounds属性
     PJTabBar *view = [[PJTabBar alloc] initWithFrame:self.tabBar.bounds];
   // 3.设置tabbar的单击事件 view.
delegate = self;
   // 4.添加N个按钮,有多少个导航控制器就添加多少个按钮
for (int i = 0; i < self.viewControllers.count; i++) { NSString *imageName = [NSString stringWithFormat:@"TabBar%d",i+1]; NSString *imageSlectName = [NSString stringWithFormat:@"TabBar%dSel",i+1]; [view addButtonWithImage:[UIImage imageNamed:imageName] selectImage:[UIImage imageNamed:imageSlectName]]; } // 添加到视图 [self.tabBar addSubview:view];

下面是我自定义视图:

//
//  PJTabBar.m
//  网易彩票
//
//  Created by apple on 14-7-12.
//  Copyright (c) 2014年 pj. All rights reserved.
//

#import "PJTabBar.h"
#import "UINoHighButton.h"
@interface PJTabBar()
@property (weak,nonatomic) UIButton *selectBtn;
@end
@implementation PJTabBar

// 我们把这个想成是一个容器,我们只负责创建,
// layview负责显示位置
- (void)addButtonWithImage:(UIImage*)image selectImage:(UIImage*)selectImage
{
     UIButton *btn = [UINoHighButton buttonWithType:UIButtonTypeCustom];
     [btn setBackgroundImage:image forState:UIControlStateNormal];
     [btn setBackgroundImage:selectImage forState:UIControlStateSelected];
     [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
     [self addSubview:btn];
     // 创建完毕
}

// 这里上开始显示
- (void)layoutSubviews
{
     int width = self.frame.size.width /  self.subviews.count;
     int height = self.frame.size.height;
     int y = 0;
     int x;
     for (int i = 0; i < self.subviews.count; i++) {
          UIView *view = self.subviews[i];
          view.tag = i;
          view.frame = CGRectMake(i*width, y, width, height);
          if (i == 0) {
               // 选中第一个
               [self click:view];
          }
     }
}

- (void)click:(UIButton*)btn
{
     if (self.selectBtn == btn) {
          return;
     }
     self.selectBtn.selected = NO;
     btn.selected = YES;
     self.selectBtn = btn;
     if ([self.delegate respondsToSelector:@selector(tabBarSelectIndex:)]) {
          [self.delegate tabBarSelectIndex:btn.tag];
     }
}

@end

 

posted @ 2014-08-02 00:37  宝贝,我永远都在  阅读(257)  评论(0)    收藏  举报