整理一些关于UIViewController和UIView的学习笔记,笔记主要参考于《疯狂iOS讲义(上)》。
UIViewController:
大部分控制器类都会继承UIKit的UIViewController基类,该基类中包含大量方法,应用控制器类可以通过重写这些方法来处理视图加载、视图显示等各种事件。
UIViewController包含如下常见的重要重写的方法:
1.
viewDidLoad:当该控制器管理的视图被加载完成后, 系统自动调用该方法。如果需要在视图加载完成后执行某些代码,可以通过重写该方法来完成。重写该方法时不要忘记通过
[super viewDidLoad]代码来调用UIViewController基类的viewDidLoad方法。
2.
didReceiveMemoryWarning:该方法不会由程序员自己来调用。而是当系统检测到可用内存紧张时,将会调用。如果开发者需要在系统内存紧张时释放部分内存,则可以通过重写该方法来释放那些暂时不会使用的对象所占用的内存。重写该方法时需通过
[super didReceiveMemoryWarning]代码来调用UIViewController基类的didReceiveMemoryWarning方法。
3.
viewWillAppear::当该控制器管理的视图将要显示出来时,系统会自动调用该方法。如果需要在视图将要显示出来时执行某些代码,则可以通过重写该方法来完成。重写该方法时需要通过
[super viewWillAppear:YES]来调用UIViewController的viewWillAppear:方法。
4.
viewDidAppear::当该控制器管理的视图显示出来后,系统自动调用该方法。因此如果需要在视图显示出来后执行某些代码,可以通过重写该方法来完成。重写该方法同样需要用
[super viewDidAppear:YES]来调用UIViewController基类的viewDidAppear:
5.
viewWillDisappear:: 当控制器管理器将要被隐藏或将要被移除窗口时,系统自动调用该方法。如果需要在此时执行某些代码,可以重写此方法。重写该方法时需要通过
[super viewWillDisappear:YES]来调用UIViewController的viewWillDisappear: 方法。
6.
viewDidDisappear::当控制器管理的视图被隐藏时或被移除窗口之后,系统自动调用此方法。如果需要在视图被隐藏或者被移除窗口以后执行某些代码,可以通过重写此方法来完成。重写该方法时需要通过
[super viewDidDisappear:YES]来调用UIViewController的viewDidDisappear: 方法。
7.
viewWillLayoutSubviews:当控制器管理的视图将要排列它包含的所有子视图时,系统自动调用该方法。如果开发者需要在视图将要排列它包含的所有子视图时执行某些代码,则可通过重写该方法来完成。重写该方法时不要忘记通过
[super viewWillLayoutSubviews]代码来调用UIViewController基类的viewWillLayoutSubviews方法。
8.
viewDidLayoutSubviews:当控制器管理的视图把它包含的子视图排列完成后,系统会自动调用该方法。如果需要在视图把它包含的所有子视图排列完成后执行某些代码,则可以通过重写该方法来完成。重写该方法时不要忘记通过
[super viewDidLayoutSubviews]代码来调用UIViewController基类的viewWillLayoutSubviews方法。
UIView:
当开发者打算派生自己的UI控件时,首先定义一个继承UIView基类的子类。然后重写UIView类的一个或多个方法。通常被重写的方法如下:
1.
initWithFrame::程序创建UI控件时通常会调用该方法执行初始化,因此,如果你需要对UI控件执行一些额外的初始化,则可以通过重写该方法来实现。
2.
initWithCoder::程序通过在storyboard文件加载完该控件后会自动调用该方法。如果需要从storyboard文件中加载该控件后执行自定义初始化,则可通过重写该方法。
3.
drawRect::如果需要自行绘制该控件的内容,则可通过重写该方法来实现。
4.
layoutSubViews::如果需要对该控件所包含的子控件布局进行更精确的控制,可以重写此方法。
5.
didAddSubview::当控件添加子控件完成时,将会激发此方法。
6.
willRemoveSubview::当控件将要删除子控件时,激发该方法。
7.
willMoveToSuperview::当控件将要添加到父控件中时,激发该方法。
8.
willMoveToWindow::当控件添加到窗口中时,激发该方法。
9.
didMoveToWindow:当控件添加到窗口中完成时,激发该方法。
10.
touchesBegan:withEvent::当用户手指开始触碰该控件时,激发该方法。
11.
touchesMoved:withEvent::当用户手指在该控件上移动时,激发该方法。
12.
touchesEnded:withEvent::当用户守住结束触碰该控件时,激发该方法。
13.
touchesCancelled:withEvent::当用户取消触碰该控件时,激发该方法。
当需要自定义View时,开发者应该根据自己的需要重写上面部分方法。