第五讲 对于耦合的认识 target/action设计模式 delegate设计模式 手势识别器
前言:对于ios中耦合的认识
耦合是衡量一个程序写的好坏的标准之一,如果耦合度过高,会降低程序的可移植性和复用性.
耦合是衡量模块与模块之间关联程度的指标
“高内聚,低耦合”是面向对象编程的核心思想。
对于耦合的简单理解: 耦合并不是软件开发中的专用语言,在初中和高中物理中就有电磁学方面的耦合,还有印象中机械设备之间也有耦合的概念,所以软件开发中的耦合只是来源于生活,用之于软件工程学。
就拿机械设备中的耦合来类比说明吧,我们都知道长途货运车,把车头和车身分别想象成两个不同功能的模块,车头的发动机负责驱动,车身负责装载货物, 两个模块之间应该是较低的耦合度,只要车头和车身之间有一个坚固链接的铁轴,这是它们之间耦合度的一个主要结构,再附加上一些电路线之类的零件用以从车头 控制车身的灯光,这基本就是两者之间的低耦合的体现;而车身和车头自身则要高内聚,车身主要提供宽敞的空间来存放货物,车头内部复杂的电路系统和发动机驱 动,用来给整个车子提供动力,以及控制电路系统。
一、target/action设计模式
可以自定义target/action方法,实现view等的点击响应事件
实例代码:
习题:参照按钮点击相应事件,用target/action方法为View视图编写点击相应事件,实现随机切换颜色和打印一定内容
Appdelegate.m文件
chViewcontroller.m文件(上)
chViewController.m文件(下)(按钮点击事件,并参照问view视图点击相应事件)
chView.h文件
chview.m文件
butview.h(点击事件视图) 需要为点击事件用到的变量及方法进行声明,
butview.m文件 实现自定义target/action方法
效果图:白色为view,中间两个按钮,点击view时,执行自定义targat/action点击相应事件,实现随机切换颜色
二、代理设计模式(delegate模式)
delegate代理模式实现的步骤:
1.建立protocol协议文件,在其中声明想要执行的动作或事件
2.将协议引入要通过代理去实现的文件(在.h文件声明,在.m文件写需要通过代理去完成的事件)
3.让代理人(及代理别人执行文件的一方)遵守协议(.m文件),并实现相应的代理事件
实例代码:
练习:通过代理让自定义视图控制器帮助changeview(其是rootview子视图)完成变换颜色事件
Appdelegate.m中的常规替换根视图设置
delegateViewControl.m(上) 常规布局设置
delegateViewControl.m(下)对代理事件的执行(相当于执行事件的保姆)
root.h文件实现替换delagatecontroller中原有视图的功能,同时将changView作为其子类
root.m文件事件(在其中添加changView为其子类,并进行布局)
changeView.h文件(协议中作为老板的一方)只需引入协议,并声明要让代理执行执行的事件
changeview.m文件(通知代理执行的事件)
colorprotocol.h(协议),声明需要代理实现的方法
效果图:用view自定义的targat/action方法,随机颜色
三、 UIImageView (继承于UIView)
UIImageView 的基本用法(详解)
在定义UIImageView时,因为其为view的子类,所以要在创建的imageView.h中对其进行相应的声明,然后在imageView.m中才能使用(略去)
四、手势识别器
6种手势识别方法
轻拍 长按 旋转 捏合(放缩大小) 轻扫 平移
实例代码:(6种常见手势详解)
1.UIImage初始化,和轻拍方法
2.长按
3.旋转
4.捏合
5.轻扫
6.平移