第一種不需要自定義tabBar? 可以在按下面方法創建
/? Copyright (c) 2014年itcast. All rights reserved.
//
#import"CZAppDelegate.h"
#import"CZOneViewController.h"
#import"CZTwoViewController.h"
@implementationCZAppDelegate
/**
iOS7 view的frame: (0,0,320,480)
iOS6 view的frame: (0,0,320,411)從狀態欄下方開始計算坐標
UITabBar高度是49
*/
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
self.window.backgroundColor= [UIColorwhiteColor];
UITabBarController*tab = [[UITabBarControlleralloc]init];
//第一種方式
CZOneViewController*one = [[CZOneViewControlleralloc]init];
one.title=@"第一個";
//設置圖像
one.tabBarItem.image= [UIImageimageNamed:@"tab_buddy_nor"];
//設置數字
one.tabBarItem.badgeValue=@"100";
CZTwoViewController*two = [[CZTwoViewControlleralloc]init];
two.tabBarItem.image= [UIImageimageNamed:@"tab_me_nor"];
two.title=@"第二個";
//??? [tab addChildViewController:one];
//??? [tab addChildViewController:two];
tab.viewControllers=@[one, two];
self.window.rootViewController= tab;
[self.windowmakeKeyAndVisible];
returnYES;
第二種如果要自定義tabBar
1.先創建一個繼承UITabBarController的控制器
2.設置UIWindow的根控制器為繼承UITabBarController的控制器
#import"XZAppDelegate.h"
#import"XZTabBarViewController.h"
@implementationXZAppDelegate
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window= [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
self.window.backgroundColor= [UIColorwhiteColor];
XZTabBarViewController*tab = [[XZTabBarViewControlleralloc]init];
self.window.rootViewController= tab;
[self.windowmakeKeyAndVisible];
returnYES;
}
3.在繼承UITabBarController的控制器中創建子控制器
//? XZTabBarViewController.m
//手碼自定義TabBar
//
//? Created by chao on 14-8-19.
//? Copyright (c) 2014年chao. All rights reserved.
//
#import"XZTabBarViewController.h"
#import"XZOneViewController.h"
#import"XZTwoViewController.h"
#import"XZThreeViewController.h"
#import"XZFrourViewController.h"
#import"XZFiveViewController.h"
@interfaceXZTabBarViewController()
@property(nonatomic,strong)UIButton*selectedButton;
@end
@implementationXZTabBarViewController
- (void)loadView
{
[superloadView];
//創建子控制器
XZOneViewController*one = [[XZOneViewControlleralloc]init];
XZTwoViewController*two = [[XZTwoViewControlleralloc]init];
XZThreeViewController*thr = [[XZThreeViewControlleralloc]init];
thr.view.backgroundColor= [UIColorpurpleColor];
XZFrourViewController* fro = [[XZFrourViewControlleralloc]init];
XZFiveViewController*fiv = [[XZFiveViewControlleralloc]init];
//添加到tabBar的子控制器數組中它會按添加先后順序排列
// ****注意要先子控制器再自定義他的按鈕添加到tabBar上
// tabBar是UITabBarController下的整個工具條
// UITabBarButton是tabBar工具條中的每一個按鈕
//每一個UITabBarButton顯示什么內容由,由對應子控制器的tabBarItem屬性來決定
//詳見**UITabBarController簡單介紹**
self.viewControllers=@[one, two, thr, fro, fiv];
CGRecttab =self.tabBar.bounds;
CGFloatw = tab.size.width/5;
CGFloath = tab.size.height;
CGFloaty =0;
for(inti =0; i <5; i++) {
UIButton*btn = [[UIButtonalloc]init];
CGFloatx = i * w;
btn.frame=CGRectMake(x, y, w, h);
NSString*imageName = [NSStringstringWithFormat:@"TabBar%d", i+1];
NSString*imageSelName = [imageNamestringByAppendingString:@"Sel"];
[btnsetBackgroundImage:[UIImageimageNamed:imageName]forState:UIControlStateNormal];
[btnsetBackgroundImage:[UIImageimageNamed:imageSelName]forState:UIControlStateSelected];
[self.tabBaraddSubview:btn];
btn.tag= i;
[btnaddTarget:selfaction:@selector(click:)forControlEvents:UIControlEventTouchDown];
if(i ==0) {
[selfclick:btn];
}
}
}
- (void)click:(UIButton*)btn
{
if(self.selectedButton== btn)return;
self.selectedButton.selected=NO;
btn.selected=YES;
self.selectedButton= btn;
self.selectedIndex= btn.tag;
}
@end