view的封装(自定义控件)

三大步骤

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

思想。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容