自定义控件

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的读取

自定义控件时,通常只创建一个视图,以防出错

 

posted @ 2019-07-29 18:08  kinghyt  阅读(173)  评论(0编辑  收藏  举报