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

浙公网安备 33010602011771号