09-UIKit(UICollectionViewController、UITabBarController)

目錄:ios

1、UICollectionViewControllerapp

2、UITabBarController(標籤控制器)ide

3、視圖和試圖控制器的生命週期佈局

4、其餘控件動畫

回到頂部atom

1、UICollectionViewControllerspa

1 概念:從ios6開始,是一個變異的TableViewController,能夠將其認爲是一個二維表視圖。code

2 佈局特色:Flow Layout流式佈局對象

3 和TableViewController比較:blog

TableViewController      CollectionViewController

section                        section

row                             item

cell                              cell

cell:UITableViewCell或子類cell:UICollectionViewCell

協議:

TableViewDatasource    CollectionViewDatasource

三問                             三問

TableViewDelegate      CollectionViewDeletate

一響應                          一響應

[1-CollectionViewController]

步驟:

1)建立MXCollectionViewController:UICollectionViewController(xib)

2)改變View的類型:

將xib中的view刪除,在託一個UICollectionView,進行以下設置,將UICollectionView的datasource和delegate設置爲Files Owner,將Files Owner中的view連線到UICollectionView

3)建立自定義的Cell類MXCell:UICollectionViewCell

4)建立自定義的cell的xib文件,託一個UICollectionViewCell到xib中,設置72X72加lablel控件

5)將Cell的xib文件的類型設置成MXCell,在將cell中的label拖成MXCell類的屬性

6)設置UICollectionView的尺寸,每個cell的大小,cell之間的間距,每個section的內邊距,以及CollectionView的頭和腳高度

7)回答三問,多少區,每區多少個條目,每一個條目的cell是什麼樣

回到頂部

2、UITabBarController(標籤控制器)

1 控制器的控制器

2 建立

1)建立時常常須要先建立出要包含的多個繼承自UIViewController的VC

2)用TabBarController包含這些VC

【2-tabBarController】

 1     UITabBarController *tab = [[UITabBarController alloc] init];
 2 
 3     MXFirstViewController *first = [[MXFirstViewController alloc] initWithNibName:@"MXFirstViewController" bundle:nil];
 4 
 5     MXSecondViewController *second = [[MXSecondViewController alloc] initWithNibName:@"MXSecondViewController" bundle:nil];
 6 
 7     MXThreeViewController *three = [[MXThreeViewController alloc] initWithNibName:@"MXThreeViewController" bundle:nil];
 8 
 9     tab.viewControllers = @[first,second,three];
10 
11     self.window.rootViewController = tab;

3)tabBar中的按鈕title和image須要配置:

在具體的VC中設置屬性:

self.title   設置標題(通常顯示在navigation上)

self.tabBarItem.title  設置tabBar標題

self.tabBarItem.image  設置tabBar圖片

注意:先設置title,在設置tabBarItem.title,圖片必須設置

注意:若是屬性設置在viewDidLoad中運行的時候,第二第三個view的屬性會看不到,由於只有點擊這些頁面的時候纔會加載viewDidLoad,因此這些屬性須要在每一個VC建立的時候設置,具體在- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil中設置。

 1 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
 2 
 3 {
 4 
 5     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
 6 
 7     if (self) {
 8 
 9         // Custom initialization
10 
11         self.tabBarItem.title = @"hellA";
12 
13         self.tabBarItem.image = [UIImage imageNamed:@"1"];
14 
15     }
16 
17     return self;
18 
19 }

3 tabBar和navigation一塊兒使用

rootViewController是tabBar

【3-tabBar-naviga】

1)之間的關係:

 1     MXFirstViewController *first = [[MXFirstViewController alloc] initWithNibName:@"MXFirstViewController" bundle:nil];
 2 
 3     MXSecondViewController *second = [[MXSecondViewController alloc] initWithNibName:@"MXSecondViewController" bundle:nil];
 4 
 5     UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:first];
 6 
 7     UINavigationController *navi2 = [[UINavigationController alloc] initWithRootViewController:second];
 8 
 9     UITabBarController *tab = [[UITabBarController alloc] init];
10 
11     tab.viewControllers = @[navi,navi2];
12 
13     self.window.rootViewController = tab;

2)推新界面時,push時默認新界面會保留TabBar,若是不但願看見,在push以前能夠設置隱藏,present推新界面時,新界面不會出現tabBar。

 1 - (void)viewDidLoad
 2 
 3 {
 4 
 5     [super viewDidLoad];
 6 
 7     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pushTap)];
 8 
 9     // Do any additional setup after loading the view from its nib.
10 
11 }
12 
13 - (void)pushTap{
14 
15     MXTableViewController *table = [[MXTableViewController alloc] initWithNibName:@"MXTableViewController" bundle:nil];
16 
17     table.hidesBottomBarWhenPushed = YES;//隱藏tabBar
18 
19     [self.navigationController pushViewController:table animated:YES];
20 
21 }

回到頂部

3、視圖和試圖控制器的生命週期

1 viewController對象自己的建立和銷燬

1)建立

init  initWithXxx  initWithNibName(使用xib初始化)  initWithCoder(使用storyBoard初始化)

2)屬性

私有屬性@property(nonatomic,strong)NSMutableArray *data;通常會在init方法中建立此屬性對應的對象。最好是在getter方法中建立,這樣就只有須要使用此屬性時才建立此對象(Lazy loading延遲加載)

公開屬性通常是由外面賦值進來的,或是隻讀的。

3)釋放

dealloc方法,在ARC下,此方法通常不太關注。

2 viewController對象的生命週期

1)視圖建立(顯示以前加載nib)

-> viewDidLoad      加載nib文件後調用,常常用於將數據賦值到顯示界面的控件上

-> viewWillAppear     視圖在顯示以前調用,常常將更新界面的代碼寫在此處

2)視圖可見

-> viewDidAppear     視圖顯示以後調用,當界面播放動畫時用

-> viewWillDisappear    視圖即將消失時調用

3)視圖不可見

-> viewDidDisappear     視圖消失後調用

若是在viewWillDisappear/ viewDidDisappear中分配某些資源,在這裏釋放這些資源

--------------特殊狀況(瞭解)--------------

->didReceiveMemoryWarning系統內存低時調用

-> viewDidUnload 在ios6以後再也不調用

【4-viewController-LifeCycle】

3 應用程序的生命週期

0)not running 非運行狀態

1)前臺foreground

inactive 前臺非活動狀態

active 活動狀態

2)後臺background

3)suspended掛起狀態

【4-viewController-LifeCycle】

 1 // 應用啓動時調用,初始化根視圖控制器,在storyBoard中可能沒有任何代碼
 2 
 3 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 4 
 5 // 當程序從活動狀態進入非活動狀態時調用,好比有電話或短信進來,或用戶按下home
 6 
 7 // 在這個方法中你能夠暫停正在處理的任務,禁用計時器,OpenGL ES幀率停掉,若是是遊戲,在此方法中暫停遊戲的運行resignActive辭去活動狀態
 8 
 9 - (void)applicationWillResignActive:(UIApplication *)application
10 
11 {
12 
13     NSLog(@"非活動狀態");
14 
15 }
16 
17 // 釋放一些共享資源,保存用戶數據,將計時器設爲無效,保存應用程序的狀態信息,以便未來使用
18 
19 // 若是你的應用程序支持後臺執行,當用戶退出程序時會調用此方法enterBackground進入後臺
20 
21 - (void)applicationDidEnterBackground:(UIApplication *)application
22 
23 {
24 
25     NSLog(@"進入後臺");
26 
27 }
28 
29 // 將要進入前臺時調用,從後臺過分到非活動狀態,能夠撤銷進入後臺時的一些改變enterForeground進入前臺
30 
31 - (void)applicationWillEnterForeground:(UIApplication *)application
32 
33 {
34 
35     NSLog(@"進入前臺");
36 
37 }
38 
39 // 從非活動狀態進入活動狀態時調用,從新開始暫停的任務,若是應用程序是從後臺進入的能夠再次更新界面becomeActive變爲活動
40 
41 - (void)applicationDidBecomeActive:(UIApplication *)application
42 
43 {
44 
45     NSLog(@"活動狀態");
46 
47 }
48 
49 // 應用程序終止時調用,能夠保存一些數據,terminate終止
50 
51 - (void)applicationWillTerminate:(UIApplication *)application
52 
53 {
54 
55     NSLog(@"終止程序");
56 
57 }

回到頂部

4、其餘控件

UISegmentedControl(分割)、

UIActivityIndicatorView(轉圈)、

UIProgressView(進度條)

 1 @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *inditor;
 2 
 3 @property (weak, nonatomic) IBOutlet UIProgressView *progress;
 4 
 5 - (IBAction)segmenClick:(UISegmentedControl *)sender {
 6 
 7     NSInteger index = sender.selectedSegmentIndex;
 8 
 9     if (index == 1) {
10 
11         [self.inditor stopAnimating];
12 
13         self.progress.progress = 0.2;
14 
15     }else if(index == 0){
16 
17         [self.inditor startAnimating];
18 
19     }
20 
21     NSLog(@"%d",index);
22 
23 }
相關文章
相關標籤/搜索