view的封装

 view的封装

- 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心

- 外界可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据

 封装控件的基本步骤

- 在initWithFrame:方法中添加子控件,提供便利构造方法

- 在layoutSubviews方法中设置子控件的frame(一定要调用super的layoutSubviews)

- 增加模型属性,在模型属性set方法中设置数据到子控件上

/**

*init方法内部会自动调用initWithFrame:方法

*/

- (instancetype)initWithFrame:(CGRect)frame

{

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

self.backgroundColor = [UIColor orangeColor];

// 添加商品图片

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

iconView.backgroundColor =[UIColor redColor];

[self addSubview:iconView];

self.iconView = iconView;

// 添加商品名字

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

nameLable.backgroundColor = [UIColor blueColor];

nameLable.textAlignment = NSTextAlignmentCenter;

nameLable.font = [UIFont systemFontOfSize:14];

[self addSubview:nameLable];

self.nameLable = nameLable;

}

return self;

}

布局子控件(layoutSubviews)

* 这个方法专门用来布局子控件,一般在这里设置子控件的frame

* 当控件本身的尺寸发生改变的时候,系统会自动调用这个方法

// 一定要调用super的layoutSubviews

— (void)layoutSubviews{

[super layoutSubviews];

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

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容