標籤:style blog http io color ar os 使用 for
iOS開發UI篇—UITabBarController生命週期(使用storyoard搭建) 一、UITabBarController在storyoard中得搭建1.建立一個項目,把storyboard中預設的控制器刪除,拖UITab Bar Controller。2.建立viewcontroller,添加到UITab Bar Controller中去(連線)。注意點:連線的順序就是將來顯示的順序,顯示在眼前的為第一個連線的view。提示:控制器的介面對應的tabbarbutton和圖片顯示什麼內容,由它的控制器確定。3.設定子控制器的UITabBar等資訊。 4.運行效果 二、UITabBarController的生命週期示範思路:建立三個控制器類來對控制器進行分別管理,重寫內部的生命週期方法就可以瞭解UITabBarController內部管理機制。 分析代碼:
1 #import "TXAppDelegate.h" 2 3 @implementation TXAppDelegate 4 5 /** 6 * app載入完畢的時候調用(一般只調用一次) 7 * 8 */ 9 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions10 {11 NSLog(@"didFinishLaunchingWithOptions");12 return YES;13 }14 15 /**16 * app失去焦點的時候調用(UI控制項不能正常使用)17 */18 - (void)applicationWillResignActive:(UIApplication *)application19 {20 NSLog(@"applicationWillResignActive");21 }22 23 /**24 * app進入背景時候調用(app消失不見)25 */26 - (void)applicationDidEnterBackground:(UIApplication *)application27 {28 NSLog(@"applicationDidEnterBackground");29 }30 31 /**32 * app進入前台的時候調用(app顯示出來)33 */34 - (void)applicationWillEnterForeground:(UIApplication *)application35 {36 NSLog(@"applicationWillEnterForeground");37 }38 39 /**40 * 當app獲得焦點的時候調用(這時候整個app的UI控制項都能正常使用)41 */42 - (void)applicationDidBecomeActive:(UIApplication *)application43 {44 // UITabBarController *tabbarVc = (UITabBarController *)self.window.rootViewController;45 // NSLog(@"%@", NSStringFromCGRect(tabbarVc.tabBar.frame));46 47 // for (UIView *child in tabbarVc.tabBar.subviews) {48 // if ([child isKindOfClass:[UIImageView class]]) {49 // [child removeFromSuperview];50 // }51 // }52 NSLog(@"applicationDidBecomeActive");53 }54 55 //app進入後台:休眠, 不能接受事情(比如關閉)56 /**57 * app關閉的時候調用(一般情況下不會調用)58 */59 - (void)applicationWillTerminate:(UIApplication *)application60 {61 NSLog(@"applicationWillTerminate");62 }63 64 @end
(1)運行程式,列印輸出為:說明:當把三個子控制器都添加給UITabBarController來管理後,當程式啟動時它只會載入第一個添加的控制器的view。(2)點擊連絡人按鈕,切換到第二個介面。列印輸出為:說明:先把第一個view移開,再把新的view添加上去,但是第一個view並沒有被銷毀。(3)重新點擊訊息介面,列印如下:說明:先重新切換到訊息介面,one控制器直接即將顯示,沒有進行載入證明了(2)中第一個view移除後並沒有被銷毀(因為它的控制器還存在,有一個強引用引用著它),且two的view移除後也沒有被銷毀。無論怎麼切換,控制器和view都不會被銷毀。UINavigationController和UITabBarController一個通過棧來管理,一個通過普通的數組來進行管理。 補充說明:UITabBarController中的UITabBar實際高度為49.在Application的下面方法中列印UITabBar的frame進行查看。
列印結果為:
iOS開發UI篇—UITabBarController生命週期(使用storyoard搭建)