Fork me on GitHub

第五讲 对于耦合的认识 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.平移

 

posted @ 2015-09-11 19:56  DengHuiCheng  阅读(345)  评论(0编辑  收藏  举报