设置控件的frame
// 通过代码创建当前这个视图的时候会调用
// 初始化当前这个view的时候会调用
1. 1 这个方法中只能添加控件,不能设置控件的frame属性
- (instancetype)init
1.2 可以添加控件,也可以设置控件的frame,但是设置的frame在控件加载完成后不会在更新
了(重用的时候不会更新了)
- (instancetype)initWithFrame:(CGRect)frame
通过文件(XIB,原型**)去创建当前视图的时候调用
2.1 执行这个方法的时候,不能确定文件相关的连线等工作是否都做好了
- (instancetype)initWithCoder:(NSCoder *)aDecoder
2.2 只有与文件相关的连线等工作都做好的时候,才会调用这个方法,不需要调用父类的什么方法
- (void)awakeFromNib
3 设置布局子控件的frame
- (void)layoutSubviews
{
[super layoutSubviews];
// 在XCode7 之后可能不会刷新你要获取的控件的frame,需要手动刷新
eg:
[self.titleLabel layoutIfNeeded];
......
}
4> 当一个控制器的frame基于另外一个控制器的frame确定之后才确定,则设置与frame有关的代码要在该方法中调用,
该方法在viewDidLoad之后调用
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
// 要实现的代码
}