初始化方法
1.这个方法就是大家熟悉的构造方法,在初始化 控件 的时候调用,我们可以在这个方法内为这个 控件
添加一些控件,这样,当我们创建完成这个 控件
的时候,这个 控件 中就有了我们想要的控件
;
- (instancetype)init {
if (self = [super init]) {
// 添加子控件
}
return self;
}
2.这个方法也是一个构造方法,与上面的-init 方法的区别仅在于在这个构造方法中,我们要传入一个 frame,以便我们在初始化 控件 的时候可以给 控件
指定我们传入的 frame;同样在这个方法中我们也可以为 控件
添加我们想要的控件;
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// 添加子控件
}
return self;
}
3.同样这个方法也是一个构造方法,但不在于,这个方法是在特殊(当对象是从文件(不仅仅只是 xib和storyboard)中创建)的时候调用.同样在这个方法中我们也可以为 控件
添加我们想要的控件;
但是这里有一点是要注意:
在这个方法调用的时候,xib 或者 storboard 与文件的连线还没有生成;所以在这里调用方法是无效的,请注意这点.
// 当对象从文件(不单单只xib和sb)中创建的时候调用
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
// 添加子控件
// 在该方法调用的时候,xib/sb中关联的控件还没有连好线.
}
return self;
}
其它方法
#pragma mark - 当控制器从xib/sb中创建时调用
- (void)awakeFromNib {
// 添加子控件
// 获得xib/sb中子控件,给子控件属性设置
}
这个方法,当添加子`控件`时或当前控件frame发生改变时(改变前和改变后的frame要不一致);
#pragma mark -一般在这个方法里面对构造方法中添加的`控件`的 frame 进行设置
- (void)layoutSubviews {
[super layoutSubviews];
// 布局子控件的frame
}
#pragma mark - 当类被加载时调用
+ (void)load {
}
#pragma mark - 当类第一次使用时调用
+ (void)initialize {
}