iOS中标准的自定义控件(UIView的封装)

本文介绍了在iOS开发中自定义UIView的封装,包括通过纯代码和Xib+代码两种方式,并强调了封装的目的和注意事项。通过实例展示了如何创建自定义视图,并在布局子视图时调用`layoutSubviews`方法。最后比较了两种封装方法的优缺点,建议根据视图需求选择合适的方法。
摘要由CSDN通过智能技术生成

iOS中标准的自定义控件(UIView的封装)

前言,在开发过程中,由于系统的控件不能达到开发者的需求,导致自定义控件使用的频率非常高,基本上项目中处处都是自定义的控件。本文将介绍自定义控件的总体使用(也就是UIView的封装),不细分单独控件的自定义(如UIButtonUITabBar的自定义)其实单独控件的自定义与本文也是大同小异。另外本文下面的例子用自定义UIButton更为合适,但是本人出于对所有自定义控件的一个总结,用了自定义UIView。


UIView的封装

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

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

  • 继承自系统自带的控件,写一个属于自己的控件

  • 目的:封装空间内部的细节,不让外界关心

  • 类似于下面这张图,如果把下面所有控件加入到控制器的View中,控制器的View将拥有太多子控件,而且非常不好管理每个控件的位置,这个时候把他们封装起来,外界不用关心其内部结构,那将方便太多。

封装View举例

UIView的封装有两种方式

通过纯代码封装
  • 步骤:

    1. 新建一个继承UIView的类
    2. 在刚刚新建类的类扩展中添加子控件属性(用weak声明,防止内存泄露)
    3. initWithFrame:方法中添加子控件
    4. layoutSubviews方法中设置子控件的frame(在该方法中一定要调用[super layoutSubviews]方法)
    5. 提供一个模型属性,重写模型属性的set方法
    6. 在该setter方法中取出模型属性,给对应的子控件赋值
  • UIView的封装代码如下:


    /**
     *  CustomView.h文件
     */

    // 步骤1 新建一个继承UIView的类
    #import <UIKit/UIKit.h>
    @class CustomModel;
    @interface CustomView : UIView
    // 在这里为了方便,可以自行添加构造方法,方便使用
    // 步骤5 提供一个`模型`属性,重写模型属性的set方法
    @property (nonatomic, strong) CustomModel *model;
    @end

    /**
     *  CustomView.m文件
     */
    
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值