IOS UITabBarController

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;

}];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容