UITabBarController 標簽/分欄控制器
//UITabBarController (標簽欄控制器,父類為UIViewController,能夠管理多個視圖控制器,是一個軟件架構(gòu)級的組件)
//tabBarItem.image image的最佳尺寸(30*30/視網(wǎng)膜屏60*60),圖片過大,會顯示成矩形的黑塊,不會顯示實際圖片
//tabBarItem為視圖控制器的屬性,為UITabBarItem的對象,顯示在底部的標簽欄上,通過tabBarItem可以定制圖片和標題的顯示
//對視圖控制器的title屬性賦值,相當于對視圖控制器的navigationItem.title 和tabBarItem.title同時賦值
//設置tabBarItem處于選中狀態(tài)和非選中狀態(tài)下的圖片
[nav2.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tab_s.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_1.png"]];
//設置tabBarItem的徽標
vc4.tabBarItem.badgeValue = @"4";
//自己創(chuàng)建一個tabBarItem,利用系統(tǒng)樣式創(chuàng)建一個對象,tag值,標記tabBarItem,幾乎不會去使用
//利用系統(tǒng)樣式創(chuàng)建的tabBarItem,后續(xù)再更改image,title 無效果
//了解 通過初始化標題和圖片的方法得到tarBarItem對象,效果與直接對tabBarItem.title/tabBarItem.image賦值是一樣的
//標簽欄控制器的viewControllers是一個數(shù)組,里面存有各個視圖控制器的對象
//各個視圖控制器在標簽欄控制器上的顯示順序(左->右)與在數(shù)組中的順序一致
//UITabBarController管理視圖控制器:各個視圖控制器在標簽欄控制器中是并列的關(guān)系,理論上各個視圖控制器彼此相互獨立,互不影響
tabController.viewControllers = controllers;
//當添加到標簽欄控制器上的對象多于5個的時候,標簽欄控制器會自動創(chuàng)建一個moreTabBarItem,同時也會創(chuàng)建一個moreNavigationController ,第5個和5以后的tabBarItem會以列表的形式展示在more中
//tabController.moreNavigationController
//moreNavigationController 不會放在viewControllers數(shù)組中,標簽欄控制器單獨管理它
//將標簽欄控制器賦給window
//通過下標的方式,設置被選中的item 下標從0開始
//tabController.selectedIndex = 1;
//通過指定視圖控制器,設置被選中的item
//tabController.selectedViewController = [controllers objectAtIndex:1];
//viewController為被選中的tabBarItem所對應的視圖控制器
//讓self 0.3秒之后執(zhí)行showTabBar方法
//self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>
[self performSelector:@selector(showTabBar) withObject:nil afterDelay:0.1];
//UITabBar 標簽欄,父類為UIView
//標簽欄控制器帶有一個標簽欄,所有視圖控制器共用一個標簽欄
//當視圖控制器,或者視圖控制器的父控制器,添加到標簽欄控制器上,可以通過tabBarController屬性,取到標簽欄控制器
//self.tabBarController.tabBar,tabBar尺寸固定(320*49)
//屬性hidesBottomBarWhenPushedYES時,當視圖控制器被加到棧中時,隱藏底部的標簽欄
//vc7.hidesBottomBarWhenPushed = YES;//此屬性寫在vc7push之前,因為push的時候,會檢測此屬性值,根據(jù)屬性值的進行后續(xù)的處理
//當應用程序的活躍內(nèi)存開辟達到操作系統(tǒng)承受的闔值時,操作系統(tǒng)會給應用程序發(fā)送內(nèi)存告急的信號,應用程序會調(diào)用所有已經(jīng)存在的視圖控制器的didReceiveMemoryWarning 方法
//拿到標簽欄控制器view的所有子視圖
NSArray *subViews =self.tabBarController.view.subviews;
//設置緩沖動畫,將要延遲執(zhí)行的代碼片段放到block中
[UIView animateWithDuration:0.2
animations:^{
//根據(jù)點擊的btn,改變label的橫坐標
CGRect frame = indicatorLabel.frame;
frame.origin.x = space + btn.tag *(space +30);
indicatorLabel.frame = frame;
}];