UITabBarController的基本原理及使用(二)
繼續第一回往下講,前面我們已經給tabbar添加了2個子控制器,我們再在這個基礎上添加2個子控制器,命名為ThirdViewController和FourthViewController。
創建好控制器記得添加到tabar控制器裏面。
添加tabar按鈕
//設置tabbar按鈕標題 firstVC.tabBarItem.title = @"微信"; //設置tabbar按鈕圖片,圖片可以自行網上搜索,建議32*32大小。 firstVC.tabBarItem.image = [UIImage imageNamed:@"微信"]; //設置tabbar小紅點 firstVC.tabBarItem.badgeValue = @"10";
設置好後運行一下程序。
是不是有點微信的樣子了?我們繼續把剩下3個子控制器按鈕的樣式進行設置。
//設置tabbar按鈕標題 firstVC.tabBarItem.title = @"微信"; secondVC.tabBarItem.title = @"通訊錄"; thirdVC.tabBarItem.title = @"發現"; fourthVC.tabBarItem.title = @"我"; //設置tabbar按鈕圖片 firstVC.tabBarItem.image = [UIImage imageNamed:@"微信"]; secondVC.tabBarItem.image = [UIImage imageNamed:@"微信通訊錄"]; thirdVC.tabBarItem.image = [UIImage imageNamed:@"微信發現"]; fourthVC.tabBarItem.image = [UIImage imageNamed:@"微信通訊錄"]; //設置tabbar小紅點 firstVC.tabBarItem.badgeValue = @"10";
運行程序觀察效果。
tabbar的四個子控制器都有了自己的圖標樣式。如果你找不到素材源,我提供一個:素材網站
微信圖標選中時會將圖標渲染成綠色,而tabbar系統默認的是藍色,我們需要修改主是顏色。
//修改主題顏色,註意是對tabbar控制器進行修改。
tabBarViewController.tabBar.tintColor = [UIColor greenColor];
可以看到,選中的圖標變成了綠色,不過微信的好像是淺綠色,沒找到他們的配色方案,先用標準綠色代替了。另外,選中的圖標也可以設置成為其它圖標,大家可以自行嘗試。
//設置選中圖標時的圖像展示。 firstVC.tabBarItem.selectedImage = [UIImage imageNamed:@"微信通訊錄"];
Storyboard創建UITabBarController
下面,我們通過storyboard的方式來實現同樣的效果。
Main.storyboard默認的控制器是UIViewController,我們先刪除掉。選中Main.storyboard文件,在右側窗口選擇View Controller Scene,按鍵盤刪除鍵清除默認的控制器。
從右側窗口的控件欄拖入一個UITabBarController到主界面,並勾選is Initial View Controller
。這個選項的意思是設置選中的控制器為程序的入口,任何程序必須有且只有一個入口。
回想一下之前我們是怎麽給tabbar添加子控制器的,我們通過代碼建立了4個控制器並使用addChildViewController方法將4個控制器設為tabbar的子控制器。在storyboard裏,我們不用寫一行代碼,一個“拖”字訣走天下。
在右側控件欄拖入4個ViewController。
然後選中TabBarController,按住Ctrl鍵的同時再按住鼠標左鍵,拖出一條線指向第一個ViewController,放開鼠標後會彈出一個窗口。
選擇圖中所示的view controllers
,這就代表指向的ViewController已成為tabbar控制器的第一個子控制器。
照這個操作方法,將另外三個控制器設置為tabbar的子控制器。
我們可以看到tabbar控制器底部的導航欄已經自動出現了4個按鈕,再進行一些初始化設置。
選中一個子控制器的導航欄,右側窗口區會出現導航欄的部分可設置屬性,很熟悉對不對,title和image我們前面用代碼實現的時候就用到過,請你動手設置一下,看看是否和代碼擁有一樣的效果。
小結
- UITabBarController實際上就是一個管理控制器的控制器;
- 通過addChildViewController方法添加子控制器;
- 存在多個子控制器的情況下通過selectedIndex屬性設置哪個控制器為選擇並顯示的狀態。
- 導航欄默認高為64;
- tabbar控制器可以在子控制器之間方便的切換(前臺通過點擊導航按鈕,後臺使用selectIndex屬性)。
UITabBarController的基本原理及使用(二)