View自定义控件的封装

作者: 飞翔的道长 | 来源:发表于2016-03-15 16:34 被阅读256次
  • 为什么要封装view

    • 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心
    • 外接可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据
  • 封装控件的基本步骤

    • 新建一个类继承自UIView
    • 在initWithFrame:方法中添加子控件,提供遍历构造方法

/**

  • 初始化

  • @param frame

  • @return WXShopView
    */
    -(instancetype)initWithFrame:(CGRect)frame
    {
    if(self = [super initWithFrame:frame])
    {

    //        self.backgroundColor = [UIColor orangeColor];
    
    // 添加图片
    UIImageView *iconView = [[UIImageView alloc] init];
    iconView.backgroundColor = [UIColor blueColor];
    [self addSubview:iconView];
    self.iconView = iconView;
    
    // 添加文字
    UILabel *label = [[UILabel alloc] init];
    label.backgroundColor = [UIColor redColor];
    label.font = [UIFont systemFontOfSize:11];
    label.textAlignment = NSTextAlignmentCenter;
    [self addSubview:label];
    self.nameLabel = label;
    

    }

    return self;
    }


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

```objc
/**
*  控件大小改变事件
*/
-(void)layoutSubviews
{
    [super layoutSubviews];

    float shopW = self.frame.size.width;
    float shopH = self.frame.size.height;

    self.iconView.frame = CGRectMake(0, 0, shopW, shopW);
    self.nameLabel.frame = CGRectMake(0, shopW, shopW, shopH - shopW);
}
  • 增加模型属性,在模型属性的set方法中设置数据到子控件
/**
*  Shop的set方法
*
*  @param shop
*/
-(void)setShop:(Shop *)shop
{
  _shop = shop;

  self.iconView.image = [UIImage imageNamed:shop.icon];
  self.nameLabel.text = shop.name;
}
  • 注意点

    • 使用initWithFrame初始化方法,因为在调用init方法之后系统会再调用initWithFrame方法

相关文章

  • UI-Xib

    Xib的加载 方法1 方法2 自定义控件view的步骤 新建自定义控件类 修改xib中view的类名 封装xib的...

  • UIView

    view的封装 Xib和storyboard对比 Xib的加载 使用xib自定义view的步骤 l新建自定义控件类...

  • iOS-自定义控件相关

    本篇涵盖自定义控件、视图等. 1.iOS开发-轻松学会封装自定义视图view(自定义弹框封装详解)2.iOS开发-...

  • iOS-自定义View的封装

    在开发过程中,自定义控件使用的频率非常高,接下来简单对自定义控件做个小结 View的封装 如果一个view内部的子...

  • 自定义View的封装

    view的封装 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来。 ...

  • view的封装

    view的封装 - 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来...

  • 6.编写Home页面 -PageTitleView 顶部导航

    1.先封装 PageTitleView 1.1自定义View,自定义构造函数 1.2添加子控件,1> 添加UISc...

  • iOS边练边学--view的封装

    一、view封装的思路: *如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部的子控件的创...

  • MVC之View

    view的封装 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不...

  • 010:view的封装

    view的封装 如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不...

网友评论

    本文标题:View自定义控件的封装

    本文链接:https://www.haomeiwen.com/subject/ibhqlttx.html