目錄:ios
1、UICollectionViewControllerapp
2、UITabBarController(標籤控制器)ide
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 }