自定义方法iOS开发首页投稿(暂停使用,暂停投稿)

纯代码/xib 自定义控件

2016-10-07  本文已影响255人  小码码

1 纯代码的方式


// 纯代码时,用init方法

- (instancetype)initWithFrame:(CGRect)frame

{

if (self = [super initWithFrame:frame]) {

// 添加图片

UIImageView *iconImageView = [[UIImageView alloc] init];

iconImageView.backgroundColor = [UIColor yellowColor];

[self addSubview:iconImageView];

self.iconImageView = iconImageView;

// 添加文字

UILabel *nameLabel = [[UILabel alloc] init];

nameLabel.backgroundColor = [UIColor purpleColor];

nameLabel.textAlignment = NSTextAlignmentCenter;

[self addSubview:nameLabel];

self.namelabel = nameLabel;

}

return self;

}

/**

*  布局子控件,设置子控件的frame

*/

- (void)layoutSubviews

{

// 这里一定要调用super

[super layoutSubviews];

CGFloat shopW = self.frame.size.width;

CGFloat shopH = self.frame.size.height;

self.iconImageView.frame = CGRectMake(0, 0, shopW, shopW);

self.namelabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);

}

/**

*  设置数据

*/

- (void)setShop:(XMGShop *)shop

{

_shop = shop;

self.iconImageView.image = [UIImage imageNamed:shop.icon];

self.namelabel.text = shop.name;

}

2 加载xib的方式


// 方式1:

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"test" owner:nil options:nil];

// 方式2:

UINib *nib = [UINib nibWithNibName:@"Test" bundle:nil]; // nil 默认是mainBundle

NSArray *array = [nib instantiteWithOwer:nil object:nil];

3 初始化方法

(1)凡是通过代码创建控件的时候,会调用方法- (instancetype)initWithFrame:(CGRect)frame


- (instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

NSLog(@"initWithFrame");

}

return self;

}

(2)凡是通过xib,stroyboard 创建控件的时候,就会调用方法- (instancetype)initWithCoder:(NSCoder *)coder


- (instancetype)initWithCoder:(NSCoder *)coder

{

self = [super initWithCoder:coder];

if (self) {

NSLog(@"initWithCoder");

//注意:在此方法中不能获得子控件

//        NSLog(@"%@", self.iconView);

}

return self;

}

(3)凡是通过xib,stroyboard 创建控件之后,就会调用方法- (void)awakeFromNib


- (void)awakeFromNib {

//在此方法中一定要调用[super awakeFromNib];

//可以在此方法中对子控件进行初始化操作

[super awakeFromNib];

NSLog(@"awakeFromNib");

NSLog(@"==%@", self.iconView);

}

上一篇 下一篇

猜你喜欢

热点阅读