您的位置:首页 > 产品设计 > UI/UE

代理设计模式在 UIScrollView 中的应用

2016-01-02 00:50 525 查看
代理设计模式在UIScrollView中的应用

成为delegate的条件:

>UIScrollView将delegate需要实现的方法都定义在了UIScrollViewDelegate协议中,因此要想成为UIScrollView的delegate,必须遵守UIScrollViewDelegate协议,然后实现协议中相应的方法,就可以监听UIScrollView的滚动过程了

/**

*监听控件的事件的三种方法:
*1>通过addTarget:的方式来监听事件(前提是这个控件是继承自UIControl)
*2>通过代理的方式来监听事件
*3>通知

*/

------通过代理来监听UIScrollView对象的事件的机制---------

1.设置UIScrollView的delegate属性(也就是为UIScrollView找一个代理对象)

2.让代理对象遵守UIScrollViewDelegate这个协议。当代理对象遵守完毕这个协议以后,就可以保证代理对象中具有了对应的方法。

3.当UIScrollView的某个事件被触发的时候,UIScrollView会自动去找代理对象(delegate)的某个方法,并调用这个方法。(这样就实现了事件的机制)

4.我们要做的就是在代理对象的相应方法中,编写我们的代码。然后当UIScrollView的某个事件被触发的时候,就会自动执行这里的代码了。

设置控制器为UIScrollView的代理有2种方法:
➢方法一:通过代码(self就是控制器)
self.scrollView.delegate=self;
➢方法二:通过storyboard拖线(右击UIScrollView)

这里只用代码演示:

/**
*设置代理的基本步骤:
*1.为scrollview设置delegate属性(设置代理对象)
*2.让代理对象遵守代理协议
*3.让代理对象,实现协议中的方法
*/
//先要让控制器遵守代理协议:—>代码设置方式
@interfaceViewController()<UIAlertViewDelegate>
-(void)viewDidLoad{
[superviewDidLoad];
//设置ScrollView的contentSize
//设置scrollView的contentSize为图片框的大小
self.scrollView.contentSize=self.imgView.bounds.size;
//通过代理来监听scrollview的滚动事件
//1>为UIScrollView设置代理
//让控制器作为UIScrollView的代理
self.scrollView.delegate=self;
//设置缩放比:最大能放大多少倍,最小能缩小多少倍,
self.scrollView.maximumZoomScale=4.5;
self.scrollView.minimumZoomScale=0.1;
}

//实现代理协议中的方法(滚动方法)
//当scrollview滚动的时候就会调用这个方法
-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
//NSLog(@"....");

//输出当前滚动的位置
NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
}

//开始拖拽
-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView{
NSLog(@"开始拖拽....");
}

//停止拖拽
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollViewwillDecelerate:(BOOL)decelerate{
NSLog(@"停止拖拽....");
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: