1.UITabBarController
UITabBarController通常作為整個(gè)程序的rootViewController蕴掏,而且不能添加到別的 container viewController中。
使用步驟:
(1)初始化UITabBarController
(2)設(shè)置UIWindow的rootViewController為UITabBarController
(3)創(chuàng)建相應(yīng)的子控制器(viewcontroller)
(4)把子控制器添加到UITabBarController
selectedIndex屬性可用于設(shè)置當(dāng)前被選中的為哪個(gè)viewcontroller
可通過(guò)代理使tabbarcontroller的某一個(gè)viewcontroller不可用缨伊,即不可點(diǎn)擊喂柒,示例代碼:
- (BOOL)tabBarController:(UITabBarController*)tabBarController shouldSelectViewController:(UIViewController*)viewController {
if([tabBarController.viewControllersindexOfObject:viewController] ==1) {
returnNO;
}
returnYES;
}
2.UITabbar
UITabBar上面顯示的每一個(gè)Tab都對(duì)應(yīng)著一個(gè)ViewController辣卒,我們可以通過(guò)設(shè)置 viewcontroller.tabBarItem屬性來(lái)改變tabbar上對(duì)應(yīng)的tab顯示內(nèi)容拧晕。否則系統(tǒng)將會(huì)根據(jù)viewController的 title自動(dòng)創(chuàng)建一個(gè)紊扬,該tabBarItem只顯示文字,沒(méi)有圖像唉擂。當(dāng)我們自己創(chuàng)建UITabBarItem的時(shí)候餐屎,我們可以顯示的指定顯示的圖像和 對(duì)應(yīng)的文字描述。當(dāng)然還可以通過(guò)
設(shè)置背景顏色
[tabVC.tabBar setBarTintColor:[UIColor grayColor]];
設(shè)置選中item顏色:
[tabVC.tabBarsetTintColor:[UIColorcolorWithRed:170/255.0green:0/255.0blue:0/255.0alpha:1.0]];
注意(未驗(yàn)證):
UITabBar自己有一些方法是可以改變自身狀態(tài)楔敌,但是對(duì)于UITabBarController自帶的tabBar啤挎,我們不能直接去修改其狀態(tài)。任何直接修改tabBar的操作將會(huì)拋出異常
uitabbaritem的titlePositionAdjustment屬性可設(shè)置title的偏移量卵凑,示例代碼:
[newsVC.tabBarItemsetTitlePositionAdjustment:UIOffsetMake(0, -3)];
UIBarItem的imageInsets屬性可設(shè)置image的偏移量庆聘,示例代碼:
[newsVC.tabBarItemsetImageInsets:UIEdgeInsetsMake(20,0,0,0)];
UITabBar的默認(rèn)高度為49
UITabBarController的tabBar.frame屬性可任意修改tabbar的寬度和位置,但高度修改不生效勺卢。而且此時(shí)tabbarcontroller控制下的view controller的view也是按照tabor的默認(rèn)尺寸和位置進(jìn)行適配伙判,如果要修改tabor的frame還需要手動(dòng)對(duì)其控制下的view controller進(jìn)行適配。
3.UITabbarItem
tabbaritem可分別設(shè)置image和selectedImage屬性黑忱,用來(lái)顯示選中和未選中時(shí)顯示的圖片
UIBarItem的圖片處理方案:
1.(默認(rèn))使用系統(tǒng)的圖片渲染處理宴抚,即時(shí)圖片本身有顏色也將對(duì)最終顯示結(jié)果無(wú)任何影響,此時(shí)可改變渲染的顏色
2.使用圖片本身的顏色甫煞,此時(shí)需修改UIImage的renderingMode(只讀)屬性菇曲。示例代碼:
newsVC.tabBarItem.image??????? = [UIImage imageNamed:@"picture"];
newsVC.tabBarItem.selectedImage= [UIImageimageNamed:@"icon87"];
newsVC.tabBarItem.selectedImage= [newsVC.tabBarItem.selectedImageimageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
注:未被選中狀態(tài)的圖片默認(rèn)會(huì)被渲染成灰色,但也使用與以上屬性(可設(shè)為顯示某一張圖片的原色)