这三个方法都与自定义控件有关,具体牵扯到什么时候调用,下面总结一下调用的注意事项。
initwithFrame
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- 这个方法是在代码创建控件的时候使用,重写这个方法在这个方法里添加控件,不对控件进行尺寸的设置。因为此时的frame无法确定。
- 在控制器的viewdidload中创建一个控件,如果这个控件是基本控件,并且调用了这个方法,可以发现无法用这个方法设置Frame。因为控件尺寸设置最终都会来到setframe这个方法。
- 非代码创建的控件不会来到这个方法。
initWithCoder
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super initWithCoder:decoder]) {
}
return self;
}
- 这个方法是当用storyboard,xib创建的控件的时候回来到这个方法。
- 这个时候的控件是死的。就是说还是nil。
- 建议在awakeFromNib进行初始化操作。
awakeFromNib
- awakeFromNib是在初始化完成后调用(xib中控件创建以后)
- 可以在这个里面进行初始化操作。