初始化方法
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 {
}
原文来自:简书/
TobyoTenma