UIView为所有控件的父类
关于视图控制器
视图控制器用来控制view和model之间的交互,在IOS中,用UIViewController表示视图控制器
此类中有一些特定的方法需要开发者在开发过程中完成
1、初始化的方法
2、加载视图的方法
3、控制视图横竖屏的方法
4、内存管理方法
1、初始化的方法
初始化方法有两个
/*********初始化方法***********/
- (id)init {
if (self = [super init]) {
}
return self;
}
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
}
return self;
}
2、加载视图的方法
(1)加载视图时调用的方法
- (void)loadView {
}
(2)加载完成时调用的方法
- (void)viewDidLoad {
}
以上两个方法在视图控制类被实例化之后,只会执行一次,以后不会提及
(3)视图将要出现调用的方法
- (void)viewWillAppear:(BOOL)animated {
//视图将要出现
[super viewWillAppear:animated];
NSLog(@"视图将要出现");
}
(4)视图已经出现调用的方法
- (void)viewDidAppear:(BOOL)animated {
//视图已经出现
[super viewDidAppear:animated];
NSLog(@"视图已经出现");
}
(5)视图即将消失调用的方法
- (void)viewWillDisappear:(BOOL)animated {
//视图将要消失
[super viewWillDisappear:animated];
NSLog(@"视图将要消失");
}
(6)视图已经消失调用的方法
- (void)viewDidDisappear:(BOOL)animated {
//视图已经消失
[super viewDidDisappear:animated];
NSLog(@"视图已经消失");
}
布局视图:视图控制器的根视图或子视图的位置大小(frame)发生改变时,将会执行以下两个方法
(7)将要重新布局视图调用的方法
- (void)viewWillLayoutSubviews {
NSLog(@"1");
[super viewWillLayoutSubviews];
}
(8)新布局已经完成调用的方法
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"2");
}
小结:
1、一个控制器必带一个根视图,根视图控制器所展示的页面为根视图的页面;
2、一个视图有且仅有一个父视图,可以有多个兄弟视图和子视图
3、每个视图都有添加子视图的方法:addSubview
4、UIView类有3个属性:bounds,frame,center
frame和bounds的区别
(1)frame:有参照物,参照物为父视图的左上角
(2)bounds:参照物为自己
5、用户交互方面;
view1.userInteractionEnabled = YES;//只有相框默认为no,其他都为YES,表示不允许用户交互,即用户不可以点击
6、每个view都有一个tag属性
UIView *view = [self.view viewWithTag:100];//返回值类型不是UIView可以以强制转换,返回tag为100的view