想在UIScrollView正在滚动或滚动到某个位置又或者停止滚动时做一些特定的操作,那么就需要监听UIScrollView的整个滚动过程,而当UIScrollView发生一系列的滚动操作时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况。也就是说,要想监听UIScrollView的滚动过程,就必须先给UIScrollView设置一个代理对象,然后通过代理得知UIScrollView的滚动过程。
看UIScrollView的代码,会发现她有一个属性delagate
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是可以对她的子控件进行缩放的
//
// 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
来源:oschina
链接:https://my.oschina.net/u/1011331/blog/631272