美文网首页自定义控件
XIB和代码自定义控件的步骤

XIB和代码自定义控件的步骤

作者: 袁俊亮技术博客 | 来源:发表于2016-03-13 17:08 被阅读578次

title : XIB和代码自定义控件的步骤
category : UI


代码和XIB自定义控件和封装子控件的步骤

标签(空格分隔): UI


[TOC]

XIB自定义控件

加载XIB的两种方式

  • 方法一
// 方法一:loadNibNamed:方法返回的是一个数组
UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"JLShop" owner:nil options:nil] lastObject];

  • 方式二:
// 一般情况下,bundle参数传nil,它默认就是加载mainBundle
UINib *nib = [UINib nibWithNibName:@"JLShop" bundle:nil];
UIView *view = [[nib instantiateWithOwner:nil options:nil] firstObject];
  • 将XIB的加载代码放到自定义控件中的方式
+ (instancetype)shopView
{
    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
}

使用XIB自定义控件的步骤

- 创建UIView和XIB
- 修改XIB中view的类名,将XIB和UIView进行关联
- 封装XIB的加载过程
- 在类扩展中给子控件连线,关联子控件
- 增加模型属性,在模型属性set方法中设置数据到子控件上

XIB和Storyboard的对比

  • 共同点

    • 都用来描述软件界面
    • 都用Interface Builder工具来编辑
    • 本质都是转成代码去创建控件
  • 不同点

    • XIB是轻量级的,用来描述局部的UI界面
    • Storyboard是重量级的,用来描述整个软件界面,并且能展示多个界面间的跳转关系

代码自定义控件

代码自定义控件的步骤

  • 1 在initWithFrame方法中初始化并添加子控件(因为init方法内部会自动调用initWithFrame方法)
  • 2 在layoutSubviews方法中布局子控件
  • 3 传递模型数据给自定义控件,并重写set模型数据方法,给所有的子控制器设置数据

最好提供便利的构造方法来供外界创建控件
eg:

// 创建控件的构造方法
+ (instancetype)shopView;

+ (instancetype)shopView
{
    return [[self alloc] init];
}
  • 其他控制器调用该自定义控件的步骤
  • 创建控件
  • 传递模型数据
  • 设置自定义控件的frame

注意点

  • 一个控件有两种创建方式
    • 通过代码创建
      • 初始化时一定会调用initWithFrame:方法
    • 通过XIB\Storyboard创建
      • 初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
      • 初始化完毕后会调用awakeFromNib方法,所以如果是通过XIB\Storyboard创建的控件,希望初始化完毕后做一些事情,建议在这个方法中执行

建议实现方法将初始化代码统一放在一个方法中,然后分别在initWithFrame和awakeFromNib中都调用一下

相关文章

  • XIB和代码自定义控件的步骤

    title : XIB和代码自定义控件的步骤category : UI 代码和XIB自定义控件和封装子控件的步骤...

  • 如何用Swift创建自定义iOS控件

    本文将分两个部分内容:基于代码的自定义控件和基于XIB的自定义控件。 基于代码的自定义控件 实现的基本步骤(纯文字...

  • UIView

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

  • UI-Xib

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

  • iOS使用Xib自定义控件

    使用xib自定义一个简单的控件 XMGShopView xib效果图: 运行时效果图: xib自定义控件的创建方法...

  • swift中自定义可视化控件

    前言 自定义控件的时候,经常会不仅在代码中创建该控件,现在还越来越多的在Storyboard和XIB中直接创建,如...

  • 5.等高的cell设置

    1.内容大纲: 2.纯代码,添加子控件 项目初始准备: 创建自定义的cell: 3.自定义等高的cell--xib...

  • 2018-01-03

    自定义控件(UIView) 封装有两种方式 一种是采用xib文件,另外一种是完全代码方式。为什么使用xib?可以减...

  • iOS UI控件用strong修饰还是weak修饰

    xib 或 storyboard 中拖过来的控件 当我们从 xib 或者 storyboard 上拖控件到代码中的...

  • 自定义控件注意点

    自定义控件的步骤和注意点. 纯代码创建: 重写initWithFrame(init方法内部会调用这个方法),你如果...

网友评论

本文标题:XIB和代码自定义控件的步骤

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