UIScrollView滚动视图:2-常用代理方法的实现
在实际开发时,我们需要在屏幕的滚动动作中监控滚动的行为动作,例如,在开始滚动、滚动过程中以及结束滚动等这些不同的时刻做些特定的操作,来实现一些功能。此时,我们就需要使用代理来监控UIScrollView的整个滚动过程。
UIScrollViewDelegate简介
UIScrollViewDelegate是UIScrollView的代理协议,通过其中定义的代理方法,即可监听在用户交互过程中的不同动作。在调用UIScrollViewDelegate中的方法前,需要提前将UIScrollView对象的代理设置完成,系统会在特定的时机,自动调用代理对象的响应方法,即发送特定的消息给代理,代理来完成相应工作。
UIScrollViewDelegate中的常用方法
目前UIScrollView共有13个代理方法,但是在实际开发中并不会都用到,这里我们主要讲其中三个方法。
- 当滚动时不断调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
- 即将开始滚动时调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
- 手指离开屏幕,停止滚动时调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
UIScrollViewDelegate的实现方法
UIScrollViewDelegate的实现方法与其他代理协议的实现方法是完全一致的,主要包括3个步骤:
遵守代理协议。谁遵守了这个协议,谁就是UIScrollView的代理,一般情况下,我们会设置控制器类作为滚动视图的代理。
设置代理属性
根据程序功能的需要,实现相应的代理方法。
示例代码
下方的示例代码指定控制器类为UIScrollView对象的代理,并且可以监听用户在UIScrollView上进行的交互操作。
创建一个Single View Application工程,并导入一张名为image的图片,图片的大小尽量大一些
设置ViewController类遵守UIScrollViewDelegate协议
@interface ViewController () <UIScrollViewDelegate>
- 在ViewDidLoad中添加如下代码,设置UIScrollView的属性并且指定其代理对象
- (void)viewDidLoad {
[super viewDidLoad];
//创建一个UIImageView对象
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image"]];
//创建一个与屏幕等宽等高的滚动视图
UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
//设置滚动区域的大小
myScrollView.contentSize = imageView.bounds.size;
//指定其代理对象
myScrollView.delegate = self;
//添加子视图
[myScrollView addSubview:imageView];
[self.view addSubview:myScrollView];
}
- 实现UIScrollViewDelegate中的方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"滚动时,调用scrollViewDidScroll: 方法");
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"即将开始滚动时,调用scrollViewWillBeginDragging: 方法");
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"停止滚动时,调用scrollViewDidEndDragging: 方法");
}
运行结果如下,当用户对滚动视图进行滑动时,UIScrollViewDelegate中对应的方法会被调用。
示例代码
https://github.com/99ios/8.1.2
文章发布时间为: October 13th , 2016 at 10:18 pm
最后编辑时间为: September 13th , 2017 at 02:08 pm
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 13th , 2017 at 02:08 pm
本文由 99ios 创作,转载请注明出处