三大步骤
1.初始化view与其子控件,然后添加子控件(给view添加子控件属性)(重写init方法)
- 给view添加的属性是类扩展,降低耦合性,保护数据不被修改。
- 应该最好重写initwithFrame:(CGRect *)frame。(都会来到这个方法)
- (instancetype)init{
if (self=[super init]) {
self.backgroundColor = [UIColor redColor];
UIImageView *iconView= [[UIImageView alloc]init];
iconView.backgroundColor = [UIColor yellowColor];
[self addSubview:iconView];
_iconView = iconView;
UILabel *laberView = [[UILabel alloc]init];
laberView.backgroundColor =[UIColor blueColor];
laberView.textAlignment =NSTextAlignmentCenter;
laberView.font = [UIFont systemFontOfSize:11];
[self addSubview:laberView];
_lableView = laberView;//长期拥有它
}
return self;
2.拿到子控件(在第一步中),给子控件设置位置与尺寸(用到layoutsubviews)
- layoutsubviews 在父控件尺寸修改的时候调用。这时拿到父控件的尺寸,给子控件设置。
- (void)layoutSubviews{
[super layoutSubviews];//一定记着调用这个方法。
float shopH = self.frame.size.height;
float shopW= self.frame.size.width;
_iconView.frame =CGRectMake(0, 0, shopW, shopW);
_lableView.frame =CGRectMake(0, shopW, shopW, shopH -shopW);
//
//
//不是每一次修改立马调用这个方法,是在在一个时间段里收集修改,以最后一次修改为标准。然后在这个时间段结束的统一调用这个方法。这个是消息循环。方法内代码处在统一个循环中,一个执行时间内。
//
}
3.拿到模型数据(添加模型属性),重写模型属性的set方法,然后在set方法中将传递进来的模型数据保存到成员变量,然后给子控件添加数据例如(图片,文本)。
- (void)setShop:(shops *)shop{
_shop = shop;
_iconView.image = [UIImage imageNamed:shop.icon];
_lableView.text = shop.name;
}
总结来说就是初始化 给尺寸与位置,然后给数据(给需要的东西)。mvc
思想。
网友评论