【IOS開發—視圖控制器】

來源:互聯網
上載者:User

標籤:

一、UIViewController

  視圖控制器是UIViewController類或者其子類對象,每個視圖控制器都負責管理一個視圖階層。在UIViewController中有一個重要的UIView屬性, 這個view就是這個視圖層的根視圖,當程式將view作為子視圖加入視窗時,也會加入UIViewController對象所管理的整個視圖階層。

  視圖控制器只有在將某個視圖顯示在螢幕上時,相應的視圖控制器才會建立其視圖,這種消極式載入視圖的做法能提高記憶體的使用效率。視圖控制器建立視圖的方式有兩種:

  1)重寫UIViewController中的loadView方法。

  2)使用nib檔案。

二、將目前時間(無論哪個時區)轉換成系統時區的時間

    //返回系統當前的時區,對比localTimeZone(區別是localTimeZone時區是可以被修改的)    NSTimeZone *timeZone=[NSTimeZone systemTimeZone];    //目標日期與本地時區的位移量    NSInteger seconds=[timeZone secondsFromGMTForDate:date];    //將目標日期+上位移量轉化成本時區的時間    NSDate *newDate=[date dateByAddingTimeInterval:seconds];

三、UITabBarController

  UITabBarController也是繼承於ViewController的類,他能夠實現tab,來管理多個ViewCOntroller標籤項。

    //添加一個UITabBarController    UITabBarController *tabController = [[UITabBarController alloc] init];    tabController.viewControllers = @[BNRController, XKController];

另外,標籤項的標籤欄上可以設定圖片和title,具體資料是由視圖控制器的tabBarItem屬性提供。ViewController需要重寫initWithNibName方法

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];        if (self) {        //設定標籤頁的標題        self.tabBarItem.title = @"Hypnotize";                //從影像檔建立一個UIImage對象        UIImage *image = [UIImage imageNamed:@"Hypno.png"];                //將UIImage對象賦給標籤頁的image屬性        self.tabBarItem.image = image;    }        return self;}

四、添加本地提醒

直接上代碼

        //添加本地提醒    UILocalNotification *note = [[UILocalNotification alloc] init];        if (note) {                //notification觸發的時間        note.fireDate  = date;                //顯示在表徵圖上的紅色數字        note.applicationIconBadgeNumber = 1;                //設定時區        note.timeZone = [NSTimeZone defaultTimeZone];                        // 設定重複間隔        note.repeatInterval = kCFCalendarUnitDay;                //通知的body        note.alertBody = @"Hypontize me!!";                //這個是觸發對應按鈕上的文字        note.alertAction = NSLocalizedString(@"mememe", nil);                //UIApplication是一個單例對象,通過sharedApplication可以獲得這個單例        //scheduleLocalNotification 用於通知系統去執行這個notification        [[UIApplication sharedApplication] scheduleLocalNotification:note];

我實驗那個alertAction並沒有見到效果(後面做應用用到本地notification時再研究)。

 五、視圖控制器相關的生命週期方法

1)didFinishLaunchingWithOptions

  該方法用於設定和初始化應用視窗的根視圖控制器,會在應用啟動完畢時調用一次。

2)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

  是UIViewController的指定初始化方法

3)loadView

  覆蓋該方法,使用代碼方式設定試圖控制器的View屬性,

4)viewDidLoad(視圖控制器載入完NIB檔案之後調用)

  覆蓋該方法,設定使用NIB對象建立的視圖對象,該方法會在試圖控制器載入完視圖後被調用。

5)ViewWillAppear(視圖控制器的view被添加到應用視窗前被調用)

  覆蓋該方法,設定使用NIB對象建立的視圖對象,和viewDidLoad的區別是:viewDidLoad只會在視圖被夾在時調用,而ViewWillAppear每次視圖顯示到window時都會被調用。

6)viewDidAppear(視圖控制器的view已經被添加到應用視窗)

7)viewWillDisappear(視圖控制器的view在將要從視窗移除時調用)

8)viewDidDisappear(視圖控制器的view在已經從視窗移除時調用)

六、為視圖添加運動效果

直接上代碼:

        //添加視覺差效果        UIInterpolatingMotionEffect *motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];                motionEffect.minimumRelativeValue = @(-25);        motionEffect.maximumRelativeValue = @(25);                [label addMotionEffect:motionEffect];                //添加視覺差效果        motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];                motionEffect.minimumRelativeValue = @(-25);        motionEffect.maximumRelativeValue = @(25);                [label addMotionEffect:motionEffect];

 

【IOS開發—視圖控制器】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.