国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

[iOS基礎控件-6.12.1]QQ菜單管理UITabBarController控制器管理

2019-11-14 19:42:23
字體:
來源:轉載
供稿:網(wǎng)友
A.需求
1.類似QQ、微信頂部或者底部的窗口轉換導航條
2.給每個頁面添加相應內容
 
B.UITabBarController
1.基本概念:
(1)內容高度
iOS7之前內容高度為:屏幕高度 - 狀態(tài)欄高度44 - 底部導航條高度49
iOS7及之后,內容高度為整個屏幕
Image(254)
 
 
2.使用代碼創(chuàng)建初始化
(1)創(chuàng)建一個UITabBarController
UITabBarController的使用步驟
  • 初始化UITabBarController
  • 設置UIWindow的rootViewController為UITabBarController
  • 根據(jù)具體情況,通過addChildViewController方法添加對應個數(shù)的子控制器
 
 
(2)添加子控制器
UITabBarController添加控制器的方式有2種
  • 添加單個子控制器
- (void)addChildViewController:(UIViewController *)childController;

  • 設置子控制器數(shù)組
@PRoperty(nonatomic,copy) NSArray *viewControllers;
 
 
如果UITabBarController有N個子控制器,那么UITabBar內部就會有N個UITabBarButton作為子控件
如果UITabBarController有4個子控制器,那么UITabBar的結構大致如下圖所示
Image(255)
 
 
AppDelegate:
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // Override point for customization after application launch. 3     4     // 設置window 5     self.window = [[UIWindow alloc] init]; 6     self.window.frame = [[UIScreen mainScreen] bounds]; 7     self.window.backgroundColor = [UIColor grayColor]; 8     [self.window makeKeyAndVisible]; 9    10    11     // 設置一個UITabBarController12     UITabBarController *tabBarController = [[UITabBarController alloc] init];13     self.window.rootViewController = tabBarController;14    15     // 添加子控制器16     UIViewController *c1 = [[UIViewController alloc] init];17     c1.view.backgroundColor = [UIColor redColor];18 //    [tabBarController addChildViewController:c1];19    20     UIViewController *c2 = [[UIViewController alloc] init];21     c2.view.backgroundColor = [UIColor blueColor];22 //    [tabBarController addChildViewController:c2];23    24     UIViewController *c3 = [[UIViewController alloc] init];25     c3.view.backgroundColor = [UIColor greenColor];26    27     tabBarController.viewControllers = @[c1,c2,c3];28    29    30     return YES;31 }
 
Image(256)
 
 
(3)設置導航條選項樣式
UITabBarButton里面顯示什么內容,由對應子控制器的tabBarItem屬性決定

EN001bbb7c

UITabBarItem有以下屬性影響著UITabBarButton的內容
標題文字
@property(nonatomic,copy) NSString *title;

圖標
@property(nonatomic,retain) UIImage *image;

選中時的圖標
@property(nonatomic,retain) UIImage *selectedImage;

提醒數(shù)字
@property(nonatomic,copy) NSString *badgeValue;
 
AppDelegate:
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // Override point for customization after application launch. 3     4     // 設置window 5     self.window = [[UIWindow alloc] init]; 6     self.window.frame = [[UIScreen mainScreen] bounds]; 7     self.window.backgroundColor = [UIColor grayColor]; 8     [self.window makeKeyAndVisible]; 9    10    11     // 設置一個UITabBarController12     UITabBarController *tabBarController = [[UITabBarController alloc] init];13     self.window.rootViewController = tabBarController;14    15     // 添加子控制器16     UIViewController *c1 = [[UIViewController alloc] init];17     c1.view.backgroundColor = [UIColor redColor];18     c1.tabBarItem.title = @"紅色";19 //    [tabBarController addChildViewController:c1];20    21     UIViewController *c2 = [[UIViewController alloc] init];22     c2.view.backgroundColor = [UIColor blueColor];23     c2.tabBarItem.title = @"藍色";24 //    [tabBarController addChildViewController:c2];25    26     UIViewController *c3 = [[UIViewController alloc] init];27     c3.view.backgroundColor = [UIColor greenColor];28     c3.tabBarItem.title = @"綠色";29    30     tabBarController.viewControllers = @[c1,c2,c3];31    32    33     return YES;34 }
 
Image(257)
 
3.使用storyboard創(chuàng)建初始化
(1)拖入UITabBarController
(2)拖入N個UIViewController待用
(3)按照順序連線,設置UITabBarController的子控制器
Image(258)
 
 
Image(259)
 
(4)設置子控制器的TabBarItem
Image(260)
 
out:
Image(261)
 
 
注意:Selected Image不設置,系統(tǒng)就會自動將原圖編程藍色作為 Selected Image
 
4.子控制器的生命周期
(1)單個子控制器的生命周期和普通的控制器生命周期一樣
生命周期方法
 
 1 - (void)viewDidLoad { 2     [super viewDidLoad]; 3     NSLog(@"%@ - viewDidLoad", self.class); 4 } 5  6 - (void)viewWillAppear:(BOOL)animated { 7     [super viewWillAppear:animated]; 8     NSLog(@"%@ - viewWillAppear", self.class); 9 }10 11 - (void)viewDidAppear:(BOOL)animated {12     [super viewDidAppear:animated];13     NSLog(@"%@ - viewDidAppear", self.class);14 }15 16 - (void) viewWillDisappear:(BOOL)animated {17     [super viewWillDisappear:animated];18     NSLog(@"%@ - viewWillDisappear", self.class);19 }20 21 - (void)viewDidDisappear:(BOOL)animated {22     [super viewDidDisappear:animated];23     NSLog(@"%@ - viewDidDisappear", self.class);24 }25 26 27 - (void)didReceiveMemoryWarning {28     [super didReceiveMemoryWarning];29     NSLog(@"%@ - didReceiveMemoryWarning", self.class);30 }31 32 - (void)viewWillUnload {33     [super viewWillUnload];34     NSLog(@"%@ - viewWillUnload", self.class);35 }36 37 - (void)viewDidUnload {38     [super viewDidUnload];39     NSLog(@"%@ - viewDidUnload", self.class);40 }
 
(2)兩個子控制器切換的生命周期
a.出現(xiàn)第一個子控制器view
2014-12-27 21:11:44.338 UITabBarControllerByStoryboard[22567:590996] OneViewController - viewDidLoad
2014-12-27 21:11:44.340 UITabBarControllerByStoryboard[22567:590996] OneViewController - viewWillAppear
2014-12-27 21:11:44.407 UITabBarControllerByStoryboard[22567:590996] OneViewController - viewDidAppear
 
b.切換到第二個控制器view
2014-12-27 21:12:10.042 UITabBarControllerByStoryboard[22567:590996] TwoViewController - viewDidLoad
2014-12-27 21:12:10.042 UITabBarControllerByStoryboard[22567:590996] TwoViewController - viewWillAppear
2014-12-27 21:12:10.042 UITabBarControllerByStoryboard[22567:590996] OneViewController - viewWillDisappear
2014-12-27 21:12:10.054 UITabBarControllerByStoryboard[22567:590996] OneViewController - viewDidDisappear
2014-12-27 21:12:10.055 UITabBarControllerByStoryboard[22567:590996] TwoViewController - viewDidAppear
 
 
C.App框架
在每個子控制器之前再包裝上一個NavigationController
Image(262)
 
 
Image(263)
 
 
Image(264)
 
 
 
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 牙克石市| 屏边| 台前县| 彝良县| 怀安县| 孝昌县| 铜陵市| 客服| 子长县| 朔州市| 栾川县| 和龙市| 昌江| 阿图什市| 偃师市| 益阳市| 富平县| 涪陵区| 崇仁县| 濉溪县| 沈丘县| 郑州市| 翼城县| 察隅县| 旌德县| 喀什市| 项城市| 阿坝县| 河西区| 巨野县| 濮阳县| 封丘县| 电白县| 从化市| 拉孜县| 临高县| 诸暨市| 河池市| 开鲁县| 疏附县| 城固县|