自定义控件
MVC设计模式:
自定义控件:(自己写一个View 命名:前缀+类名)
1.系统提供的控件满足不了我们的项目需求。
2.将多个控件封装为一个整体,便于管理和操作。
两种方式:1.xib
2.纯代码
一般来说,我们的自定义类继承自UIView,首先在initWithFrame方法中将需要的子控件加入view中
(1)创建UIView的一个子类
(2)重写initWithFrame方法(调用 alloc init方法时,先调用initwithframe 再调用init方法)
(3)在initWithFrame方法里面添加子控件 (但注意 尽量不要在里面设置坐标 可能出错 坐标在layoutSubviews里面设置 自己写的话是可以的 给外部人用一般在layout里面写)UIImageView、UILabel
(4)定义一个属性变量接收外部传递过来的数据
layoutSubviews方法什么时候被调用:
- 直接调用setNeedsLayout。(这个在上面苹果官方文档里有说明)
- addSubview的时候。触发被加视图的layoutSubViews
- 当view的frame发生改变的时候。
- 滑动UIScrollView的时候。
- 旋转Screen会触发父UIView上的layoutSubviews事件。
- 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。
- initWithFrame且frame的值不为CGRectZero时(测试时出现一个奇怪的问题 某些情况下只调用一次)
PCH文件:
1.创建
2.导入需要多次使用的头文件
3.配置
创建界面的三种方式:
1、创建UIViewController的一个子类
界面的显示:
2.使用storyboard添加一个UIViewController 如有需要则关联某个类(先加载storyboard再代码)
好处:能够快速添加一个新的界面
能够使用拖拽控件的方式布局界面
可以实现界面之间的跳转关系
缺陷:不能添加单个的视图
3.使用xib添加一个view,fileowner关联
UIViewController的一个子类,让添加的view和代码控制器的view关联 使用initWithNibNamed方法加载
只能创建一个视图 且没有界面的跳转
Xib的读取
自定义控件时,通常只创建一个视图,以防出错