想在UIScrollView正在滚动或滚动到某个位置又或者中止滚动时作一些特定的操做,那么就须要监听UIScrollView的整个滚动过程,而当UIScrollView发生一系列的滚动操做时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动状况。也就是说,要想监听UIScrollView的滚动过程,就必须先给UIScrollView设置一个代理对象,而后经过代理得知UIScrollView的滚动过程。atom
看UIScrollView的代码,会发现她有一个属性delagatespa
UIScrollView将delegate须要实现的方法都定义在了UIScrollViewDelegate协议中,所以要想成为UIScrollView的delegate(能够是任意类型的对象),必须遵照UIScrollViewDelegate协议,而后实现协议中相应的方法,就能够监听UIScrollView的滚动过程了。代理
#import "ViewController.h" //在类扩展中遵照协议 @interface ViewController () <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollview; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"xx"]]; [self.scrollview addSubview:imageView]; self.scrollview.backgroundColor = [UIColor redColor]; self.scrollview.contentSize = imageView.image.size; // 设置代理 self.scrollview.delegate = self; } #pragma mark - <UIScrollViewDelegate> /** * 滑动的时候调用 */ - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScroll------"); } /** * 即将开始拖拽的时候调用 */ - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { NSLog(@"scrollViewWillBeginDragging------"); } /** * 结束拖拽的时候调用 */ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { NSLog(@"scrollViewDidEndDragging------"); } /** * (减速完毕)因为惯性中止滚动的时候调用 */ - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSLog(@"scrollViewDidEndDecelerating------"); } @end
UIScrollView是能够对她的子控件进行缩放的code
// // ViewController.m // UIScrollView的使用 // // Created by Daniel on 16/3/3. // Copyright © 2016年 Daniel. All rights reserved. // #import "ViewController.h" @interface ViewController () <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) UIImageView *imageView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //子控件 UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"xx"]]; [self.scrollView addSubview:imageView]; self.imageView = imageView; self.scrollView.backgroundColor = [UIColor orangeColor]; self.scrollView.contentSize = imageView.image.size; //设置代理 self.scrollView.delegate = self; //设置最小的缩放比例 self.scrollView.minimumZoomScale = 0.3; //设置最大的缩放比例 self.scrollView.maximumZoomScale = 1.5; } #pragma mark - <UIScrollViewDelegate> /** 该方法的返回值决定了要缩放的内容,并且被缩放的只能是UIScrollView的子控件 */ - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return self.imageView; } @end