代理的方法 在开发中用的就比较多,今天我就简单的说一下我所理解的代理,写得不好的,请大家多多指教。
例如代理在UIScrollView中的使用,掌握一种,基本上都是相似的
1.代理的概念:代理也称为委托。把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中,首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么
2.对于UIScrollView的来说,当它执行某一些操作的时候(如滚动,缩放等),会自动通知它的代理对这些操作进行处理。如果它没有设置代理,那我们就不能在这些操作过程中监听其相关的数据或者对其操作过程进行相应的控制。
3.不是任何一个类或者对象都可以做代理,代理必须拥有一些必须的方法,实现一些特定的功能才能成为代理。
4.在ios中,一般情况下选择控制器做为代理。那么就意味着控制器需要遵守特定的代理协议同时实现这些协议中的方法才有成为真正有价值的代理。
5.要成中UIScrollView的代理需要遵守UIScrollViewdelegate协议。所以我们让控制器遵守这个协议,同时指定当前UIScrollView的代理就是当前控制器
6.所以可以得到代理的作用
a)监听的思想:让一个对象a 监听另一个对象b的状态改变
b)通知的思想:一个对象b状态改变(做了某些事情) 通知另一个对象
UIScrollView的常用代理方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;:有任何偏移的时候调用,简单说就是当ScrollView进行滚动的时候调用这个方法
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView:当开始拖动scrollView的时候调用
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView:当感触到的捏合手势的时候,返回一个用于缩放的视图
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;拖拽形成的滚动操作开始减速的时候触发
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;滚动开始降速的时候触发
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;滚动动画停止的时候
一般的就是下面的几步
1.让控制器遵守协议:
@interfaceViewController()<UIScrollViewDelegate>
2.在viewDIdLoad方法中://设置代理
self.scrollView.delegate=self;
3.//设置缩放比例
self.scrollView.maximumZoomScale=2;
self.scrollView.minimumZoomScale=0.2;
4.实现代理方法
//返回进行缩放的view
- (UIView*) viewForZoomingInScrollView:(UIScrollView*)scrollView
{
return self.iconView;
}
其余的用法 基本是相同的,我就不一一列举了。希望对大家有所帮助。