在
UIkit框架中
,關(guān)于
UIview
,有幾個(gè)常用的方法以及其使用的場(chǎng)景,這里給大家總結(jié)一下。
初始化方法
1.
這個(gè)方法就是大家熟悉的構(gòu)造方法
,
在初始化 控件 的時(shí)候調(diào)用
,
我們可以在這個(gè)方法內(nèi)為這個(gè) 控件 添加一些控件
,
這樣
,
當(dāng)我們創(chuàng)建完成這個(gè) 控件的時(shí)候
,
這個(gè) 控件 中就有了我們想要的控件
;
- (instancetype)init {
if (self = [super init]) {
//
添加子控件
}
return self;
}
2.
這個(gè)方法也是一個(gè)構(gòu)造方法
,
與上面的
-init
方法的區(qū)別僅在于在這個(gè)構(gòu)造方法中
,
我們要傳入一個(gè)
frame,
以便我們?cè)诔跏蓟?控件 的時(shí)候可以給 控件 指定我們傳入的
frame;
同樣在這個(gè)方法中我們也可以為 控件 添加我們想要的控件
;
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
//
添加子控件
}
return self;
}
3.
同樣這個(gè)方法也是一個(gè)構(gòu)造方法
,
但不在于
,
這個(gè)方法是在特殊
(
當(dāng)對(duì)象是從文件
(
不僅僅只是
xib
和
storyboard)
中創(chuàng)建
)
的時(shí)候調(diào)用
.
同樣在這個(gè)方法中我們也可以為 控件 添加我們想要的控件
;
但是這里有一點(diǎn)是要注意
:
在這個(gè)方法調(diào)用的時(shí)候
,xib
或者
storboard
與文件的連線還沒(méi)有生成
;
所以在這里調(diào)用方法是無(wú)效的
,
請(qǐng)注意這點(diǎn)
.
//
當(dāng)對(duì)象從文件
(
不單單只
xib
和
sb)
中創(chuàng)建的時(shí)候調(diào)用
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
//
添加子控件
//
在該方法調(diào)用的時(shí)候
,xib/sb
中關(guān)聯(lián)的控件還沒(méi)有連好線
.
}
return self;
}
其它方法
#pragma mark -
當(dāng)控制器從
xib/sb
中創(chuàng)建時(shí)調(diào)用
- (void)awakeFromNib {
//
添加子控件
//
獲得
xib/sb
中子控件
,
給子控件屬性設(shè)置
}
這個(gè)方法
,
當(dāng)添加子
`
控件
`
時(shí)或當(dāng)前控件
frame
發(fā)生改變時(shí)
(
改變前和改變后的
frame
要不一致
);
#pragma mark -
一般在這個(gè)方法里面對(duì)構(gòu)造方法中添加的
`
控件
`
的
frame
進(jìn)行設(shè)置
- (void)layoutSubviews {
[super layoutSubviews];
//
布局子控件的
frame
}
#pragma mark -
當(dāng)類被加載時(shí)調(diào)用
+ (void)load {
}
#pragma mark -
當(dāng)類第一次使用時(shí)調(diào)用
+ (void)initialize {
}
原文來(lái)自:簡(jiǎn)書(shū)/
TobyoTenma