久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

[apple文檔]UIViewController編程指南

 panny_92 2014-12-31

一.View Controller Classes


二.自定義UIVIewController

1.創(chuàng)建

a)nib文件

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.         self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  4.         // Override point for customization after application launch.  
  5.         self.firstViewController = [[[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil] autorelease];  
  6.         self.window.rootViewController = self.firstViewController;  
  7.         self.firstViewController.wantsFullScreenLayout=YES;  
  8.         [self.window makeKeyAndVisible];  
  9.         return YES;  
  10. }  
如果你自定義controller實(shí)現(xiàn)initWithCoder:方法的話則會(huì)調(diào)用,,如果沒(méi)有實(shí)現(xiàn),,則調(diào)用init.
在調(diào)用完后,框架會(huì)自動(dòng)調(diào)用controller中的objects(一般是UIView)的awakeFromNib方法,,讓objects可以有機(jī)會(huì)來(lái)初始化自己.


b)手動(dòng)創(chuàng)建

只需要alloc&init方式就可以了

2.初始化

一般在controller中實(shí)現(xiàn)loadView方法來(lái)實(shí)現(xiàn)第一次的controller內(nèi)容的管理,,值得注意的是,如果自己實(shí)現(xiàn)了這個(gè)方法,,則不需要調(diào)用super的loadView方法

3.設(shè)置root view controller的尺寸

a)window的尺寸

b)是否有status bar

c)設(shè)備的方向(橫向豎向)

d)root view controller的wantsFullScreenLayout屬性,。這個(gè)屬性就是設(shè)置是否要包含狀態(tài)欄20像素,比方說(shuō)你在view里設(shè)置了一個(gè)button在頂部,,這個(gè)如果是true,則button出現(xiàn)在狀態(tài)欄下,,如果是false,則會(huì)自動(dòng)頂下去,。本身并不影響status bar的隱藏和消失。只是決定status bar下面是否屬于程序繪制區(qū)域而已,。

4.布局

首先可以利用每個(gè)view的autoresizingMask的設(shè)置來(lái)自動(dòng)布局

viewcontroller布局改變的順序

a)view controller的vew尺寸改變

b)調(diào)用controller的viewWillLayoutSubview.

c)調(diào)用view的layoutSubview

d)autolayout布局,調(diào)用controller的updateViewConstraints

e)如果有必要,,可以在controller調(diào)用對(duì)應(yīng)view的updateConstraints

f)調(diào)用controller的viewDidLayoutSubview.

三.View Controller的生存周期

1.初始化方法:init,initWithCoder;

2.加載controller's view:loadView: controller.view=nil; viewDidLoad: controller.view=view;

3.當(dāng)收到didREceiveMemoryWarning的時(shí)候會(huì)調(diào)用viewWillUnload,viewDidUnload;

4.dealloc:釋放資源(ARC可以忽略)


四.支持界面旋轉(zhuǎn)

1.聲明支持的旋轉(zhuǎn)方向

shouldAutorotateToInterfaceOrientation:決定支持的旋轉(zhuǎn)方向(UIInterfaceOrientationIsLandscape的橫向2個(gè)方向 UIInterfaceOrientationIsPortrait豎直2個(gè)方向)

2.如何處理方向改變

a)方向發(fā)生改變

b)調(diào)用shouldAutorotateToInterfaceOrientation查看支持的方向

c)調(diào)用controller的willRotateToInterfaceOrientation:duration方法

d)觸發(fā)view的自動(dòng)布局(詳細(xì)的看第二部分的第4點(diǎn):布局)

e)調(diào)用didRotateFromInterfaceOrientation方法

3.為每個(gè)方向創(chuàng)建不同的界面

利用notification來(lái)通知不同的狀態(tài)。

  1. @implementation PortraitViewController  
  2. - (void)awakeFromNib  
  3. {  
  4.     isShowingLandscapeView = NO;  
  5.     [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];  
  6.     [[NSNotificationCenter defaultCenter] addObserver:self  
  7.                                  selector:@selector(orientationChanged:)  
  8.                                  name:UIDeviceOrientationDidChangeNotification  
  9.                                  object:nil];  
  10. }  
  11.    
  12. - (void)orientationChanged:(NSNotification *)notification  
  13. {  
  14.     UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;  
  15.     if (UIDeviceOrientationIsLandscape(deviceOrientation) &&  
  16.         !isShowingLandscapeView)  
  17.     {  
  18.         [self performSegueWithIdentifier:@"DisplayAlternateView" sender:self];  
  19.         isShowingLandscapeView = YES;  
  20.     }  
  21.     else if (UIDeviceOrientationIsPortrait(deviceOrientation) &&  
  22.              isShowingLandscapeView)  
  23.     {  
  24.         [self dismissViewControllerAnimated:YES completion:nil];  
  25.         isShowingLandscapeView = NO;  
  26.     }  
  27. }  

4.處理旋轉(zhuǎn)的小貼士

a)暫時(shí)禁止任何事件響應(yīng)

b)存儲(chǔ)已經(jīng)顯示的地圖區(qū)域(地圖應(yīng)用中)

c)如果界面的view層次太過(guò)復(fù)雜而造成延遲,,建議先做view的截圖,,相關(guān)方法我其它博客文章中有提到

d)旋轉(zhuǎn)后,,對(duì)于tableView的話,,需要reload重新讀取數(shù)據(jù)。

e)使用旋轉(zhuǎn)通知來(lái)更新應(yīng)用信息,。


五.view顯示相關(guān)的通知

1.方法有viewWillAppear: viewDidAppear: viewWillDisappear: viewDidAppear:

2.注意這個(gè)是controller.view被設(shè)置值或者controller.view被設(shè)置成nil調(diào)用的,,當(dāng)然這個(gè)值未必就是直接設(shè)置的,可能是通過(guò)controller的顯示和移除的,。

3.知道view顯示移除的原因,,在上述4個(gè)方法中調(diào)用isMovingFromParentViewController,isMovingToParentViewController,isBeingPresented,isBeingDismissed 。


六.viewController顯示(關(guān)閉)其它viewController

在5.0之前,,對(duì)應(yīng)的方法是使用model view controller系列的方法,。5.0以后增加了presented,prensentingViewController的概念,modalViewController對(duì)應(yīng)5.0后的presentedViewController

  1. FCDemoViewController *controller= [[FCDemoViewController alloc]initWithNibName:@"FCDemoViewController" bundle:nil];  
  2. controller.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;  
  3. [self presentModalViewController:controller animated:YES];  
  4. NSLog(@"%@",self.modalViewController);  
  5. //5.0   
  6. [self presentViewController:controller animated:YES completion:nil];  
  7. NSLog(@"%@",self.presentedViewController);  
  8. NSLog(@"%@",self.presentingViewController);  

屬性modalPresentationStyle在iPad下有幾種顯示形式,,對(duì)應(yīng)不同的顯示區(qū)域,。屬性modellTransitionStyle決定過(guò)渡形式.

關(guān)閉也有對(duì)應(yīng)的方法:dismissModalViewControllerAnimated或iOS5.0以后的dismissViewControllerAnimated:completion:

5.0以后其它的變化:

controller可以自定義子controller的集合,這樣每一個(gè)controller都可以是一個(gè)container controller.

definesPresentationContext決定當(dāng)前顯示其它c(diǎn)ontroller的controller是否提供context給presentedViewController(modalViewController),如果不,,就會(huì)找上一級(jí)的controller的該值,。

詳細(xì)的操作可以查看class reference.

蘋果官方推薦使用協(xié)議的方式來(lái)讓controller相互通信。首先聲明一個(gè)協(xié)議,,并在主controller中實(shí)現(xiàn)該協(xié)議的方法,,在顯示其它c(diǎn)ontroller的時(shí)候,為其設(shè)置delegate=self.這樣在其它c(diǎn)ontroller需要回調(diào)presentingViewController就可以直接用delegate方法來(lái)回調(diào)到它,。通過(guò)這樣的方式,,可以使得復(fù)用性大大增強(qiáng)。而且被顯示的controller也不用完全知道顯示它的controller的所有信息和屬性,。


七.controller的edit mode

1.當(dāng)設(shè)置controller的editing屬性,,會(huì)自動(dòng)觸發(fā)setEditing:animated屬性,這個(gè)時(shí)候通過(guò)myController editButtonItem獲得的編輯按鈕會(huì)自動(dòng)從edit變成Done,,這個(gè)通常使用在navigation Controller

比如設(shè)置一個(gè)右上角按鈕為editButton的話代碼如下

  1. myViewController.navigationItem.rightBarButtonItem=[myViewController editButtonItem];  





    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多