一、使用纯代码方式

  • initWithFrame:中添加子控件
  • layoutSubViews中设置子控件的fame
  • 对外设置数据接口,重写setter方法给子控件设置数据显示
  • 在的viewController里面使用init/initWithFrame:方法创建自定义类,并且给自定义类的frame赋值
  • 对自定义类对外暴露的数据接口进行赋值

二、使用xib方式

  • 创建xib,在xib中拖入需要添加的控件并设置好尺寸,这个xib的Class要设置为我们定义的类
  • 通过IBOutlet的方式,将xib中的控件与自定义类进行关联
  • 对外设置数据接口,重写setter方法给子控件设置显示数据
  • 在viewController类里面加载xib文件就可以得到对应的类,这里不需要再设置自定义类的frame,因为xib已经有了整个view的大小,只需要设置位置,
  • 对类对外暴露的数据接口赋值

注意:
如果使用代码方式创建控件,那么创建时一定会调用initWithFrame:方法
如果使用xib/stotyboard方式创建控件,那么在创建时一定会调用initWithCoder:方法

在initWithCoder:里面访问属性,会发现属性为nil,因为此时自定义好控件正在初始化,属性还没赋值。很多操作都在initWithCoder:后进行。
建议在awakeFromNib方法中进行初始化的额外操作,因为awakeFromNib是在初始化完成后调用的,所以在这个方法里访问属性就可以保证不为nil。

iOS之自定义控件的更多相关文章

  1. 【转】iOS笔记-自定义控件(OC)

    原文网址:http://www.jianshu.com/p/f23862eb7b8a 导读: iOS开发中,很多时候系统提供的控件并不能很好的满足我们的需求,因此,自定义控件便成为搭建UI界面中必不可 ...

  2. IOS的自定义控件

    这里做一个类似于下面界面的小案例 1.创建一个空的布局文件 .xib new File -->User Interface -->选择View 创建一个空的view ,会自动生成一个 .x ...

  3. ios创建自定义控件必须具备的三个方法

    1.当用代码创建控件时调用 -(instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { ...

  4. 用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)

    本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.a ...

  5. Android开发之自定义组件和接口回调

    说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...

  6. 如何用 Swift 语言构建一个自定控件

    (via:破船之家,原文:How To Make a Custom Control in Swift)   用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ...

  7. Xamarin.Forms+Prism(3)—— 简单提示UI的使用

    这次给大家介绍两个比较好用的提示插件,如成功.等待.错误提示. 准备: 1.新建一个Prism Xamarin.Forms项目: 2.右击解决方案,添加NuGet包: 1)Acr.UserDialog ...

  8. iOS 自定义控件开发(中)

    <iOS 自定义控件开发(上)> <iOS 自定义控件开发(中)> 接上篇iOS自定义控件开发之后,我们尝试另外一种. 在Xcode的右边,会看到如下的图 其中,上面有一个:C ...

  9. iOS 自定义控件开发(上)

    工作需要,最近在进行iOS方面的图表工作.找了很多第三方库都无法实现效果,所以决定自己写一个控件. <iOS 自定义控件开发(上)> <iOS 自定义控件开发(中)> #0 目 ...

随机推荐

  1. Matlab2015基本语句语法04

    1. 输入.输出.格式化输出 1) 读入数据:input >>number: num=input('Give me your number: '); >>string: str ...

  2. I finally made sense of front end build tools. You can, too.

    来源于:https://medium.freecodecamp.com/making-sense-of-front-end-build-tools-3a1b3a87043b#.nvnd2vsd8   ...

  3. 图解Javascript原型链

    本文尝试阐述Js中原型(prototype).原型链(prototype chain)等概念及其作用机制.上一篇文章(图解Javascript上下文与作用域)介绍了Js中变量作用域的相关概念,实际上关 ...

  4. UML类图详解

    下面是类图的实例: (注:飞翔接口那里应为空心三角形) UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移 ...

  5. 微信小程序之明源商城系列-01-商城介绍及开发准备

    1,效果展示 数据来自于写的一个小爬虫爬了明源商城部分的数据.由于价格的保密性,下列产品价格和真实的都不同. 1.1 主页及开发文件结构 1.2  产品的详细页面 1.2  产品分类页面 1.3 产品 ...

  6. mac下配置Qt for Android+iOS

    ref: http://www.cnblogs.com/yjmyzz/p/4219829.html http://www.cnblogs.com/rophie/p/3226543.html http: ...

  7. GDB调试D语言

    GDB7.2后开始支持对D语言的调试 GUI前端 http://beej.us/guide/bggdb/#compiling GDB教程 http://blog.csdn.net/haoel/arti ...

  8. JDK Collection 源码分析(2)—— List

    JDK List源码分析 List接口定义了有序集合(序列).在Collection的基础上,增加了可以通过下标索引访问,以及线性查找等功能. 整体类结构 1.AbstractList   该类作为L ...

  9. Python之路Python3【第零篇】Python2 & Python3区别持续更新~

    print def print(self, *args, sep=' ', end='\n', file=None): # known special case of print "&quo ...

  10. QQ空间HD(6)-实现自定义的选项卡切换效果

    DJTabbarButton.m #import "DJTabbarButton.h" @implementation DJTabbarButton - (instancetype ...