標籤:
一、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開發—視圖控制器】