用XIB自定义控件(在XIB中继承使用)

  • 前言
    做开发也有蛮长的时间了,记得刚入行的时候不管写什么都是纯代码,从来都不会用Xib拖一个控件,更别说什么storyboard了。后来发现身边的同事都在用XIB写界面,每次我费了半天写出来的界面他两个小时就搞完了,而且适配也很完美。慢慢的就开始试着使用XIB和storyboard了。
    用了XIB和storyboard一段时间后,发现人是越来越懒了,哪怕一个非常简单的界面控件啥的都不愿意多写一句代码了,直接XIB。但是遇到一个很尴尬的问题,就是用XIB去自定义一个视图时,在另外一个XIB上用的时候,单单继承是完全没有用的,最后还得用代码去创建。为此很是苦恼。
    后来参考了好多网上的资料搞定了。为了后学者节约时间,特发此文。

Demo地址

  • 详细步骤如下
    1.创建一个即成UIView的类

Paste_Image.png


2.创建一个同名的XIB文件


Paste_Image.png


3.在XIB中自定义你的视图以及控件,将控件自定义成你想要的样子


Paste_Image.png

4.设置XIB的File's Owner 的Class为你创建的那个类


Paste_Image.png


5.将xib中的View拖拽关联成你创建的那个类的成员变量取名view


Paste_Image.png


6.在创建的类.m文件重写如下方法


Paste_Image.png
/**
 XIB创建会掉用
 */
- (instancetype)initWithCoder:(NSCoder *)coder{
    self = [super initWithCoder:coder];
    if (self) {
        [self setUI];
    }
    return self;
}

/**
 代码创建会掉用
 */
- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        [self setUI];
    }
    return self;
}

/**
 初始化
 */
- (void)setUI{
    [[NSBundle mainBundle]loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
    [self addSubview:self.view];
}

/**
 自动适配大小
 */
- (void)drawRect:(CGRect)rect{
    self.view.frame = self.bounds;
}

7.使用
XIB直接拖拽一个View然后即成你自定义的类就好了


Paste_Image.png

代码创建

CustomXibView *view = [[CustomXibView alloc] initWithFrame:CGRectMake(0, 0, 300, 100)];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,930评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,196评论 4 61
  • 我常常想去控制他人的行为。 不如控制自己更容易
    easyyarona阅读 206评论 0 0
  • 在我的笔筒上,也有这样两条欢欣游动的银色的小鱼,看到鱼就喜欢,也喜欢那首歌:《鱼》。
    优优红瓷阅读 131评论 0 0
  • 我己经整整半个多月没写东西。忙也一个。再加上次11月27日医师定期考核也一个。另一个最主要是:写作形式改变,群里要...
    码字好玩儿阅读 281评论 3 2