持续更新中。。。。
一、 系统在第一次使用这个类的时候调用,也就是一个类只动用一次;如果有些操作只需要调用一次,可以写在这个方法中+ (void)initialize{}
二、方法调用顺序 initWithCoder --> titleRectForContentRect: --> awakeFromNib
//当一个对象从xib或者storyboard中加载完毕后,就会调用一次
-(void)awakeFromNib{
self.titleFont=[UIFont systemFontOfSize:14];
self.titleLabel.font=self.titleFont;
//图片居中
self.imageView.contentMode=UIViewContentModeCenter;
}
//从文件中解析一个对象的时候就会调用这个方法,如果一个对象不是从文件中解析出来的,而是通过代码创建的则不会调用此方法
- (id)initWithCoder:(NSCoder *)aDecoder{
if (self=[super initWithCoder:aDecoder]) {
self.titleFont=[UIFont systemFontOfSize:14];
self.titleLabel.font=self.titleFont;
//图片居中
self.imageView.contentMode=UIViewContentModeCenter;
}
}
//通过代码创建的则调用此方法
- (instancetype)initWithFrame:(CGRect)frame{
if (self=[super initWithFrame:frame]) {
self.titleFont=[UIFont systemFontOfSize:14];
self.titleLabel.font=self.titleFont;
//图片居中
self.imageView.contentMode=UIViewContentModeCenter;
}
return self;
}
- (CGRect)titleRectForContentRect:(CGRect)contentRect{
}
自定义控件时,initWithCoder,initWithFrame 一定重写这两个方法,这样就能保证不管是从文件中创建对象 还是通过代码创建对象就能保证控件有一些初始化属性