1.任何NSObject对象实现 <UIScrollViewDelegate>协议 都可以作UIScrollView的代理对象
创建ZYXDog
类作UIScrollView
的代理
ZYXDog.h
#import <UIKit/UIKit.h>
@interface ZYXDog : NSObject <UIScrollViewDelegate>
@end
ZYXDog.m
#import "ZYXDog.h"
@implementation ZYXDog
#pragma mark - <UIScrollViewDelegate>
/**
* 即将开始拖拽的时候调用
*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
/**
* 结束拖拽的时候调用
*/
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate{
NSLog(@"%s",__func__);
}
/**
* (减速完毕)由于惯性停止滚动的时候调用
*/
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@"%s",__func__);
}
@end
//***开始拖动UIScrollView时调用
// -[ZYXDog scrollViewWillBeginDragging:]
//***在滚动时调用UIScrollView
// -[ZYXDog scrollViewDidScroll:]
//***手指拖动UIScrollView滚动没有滚动到UIScrollView的frame边缘手指减速,UIScrollView停止滚动调用
// -[ZYXDog scrollViewDidEndDragging:willDecelerate:]
// -[ZYXDog scrollViewWillBeginDragging:]
// -[ZYXDog scrollViewDidScroll:]
//***手指拖动UIScrollView滚动
//***滚动到UIScrollView的frame边缘极限UIScrollView被迫停止滚动调用
// -[ZYXDog scrollViewDidEndDragging:willDecelerate:]
//***由于UIScrollView的弹簧效果UIScrollView反弹继续滚动
// -[ZYXDog scrollViewDidScroll:]
//***在没有手指作用下UIScrollView停止滚动调用
// -[ZYXDog scrollViewDidEndDecelerating:]
ViewController.m
#import "ViewController.h"
#import "ZYXDog.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollview;
/** dog */
@property (nonatomic, strong) ZYXDog *dog;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"minion"]];
[self.scrollview addSubview:imageView];
self.scrollview.backgroundColor = [UIColor redColor];
self.scrollview.contentSize = imageView.image.size;
// 设置代理
self.dog = [[ZYXDog alloc] init];
self.scrollview.delegate = self.dog;
}
@end
2.内容缩放
ViewController.m
#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:@"minion"]];
[self.scrollview addSubview:imageView];
self.imageView = imageView;
self.scrollview.backgroundColor = [UIColor redColor];
self.scrollview.contentSize = imageView.image.size;
// 设置代理
self.scrollview.delegate = self;
// 设置缩放比例
self.scrollview.maximumZoomScale = 2.0;
self.scrollview.minimumZoomScale = 0.2;
}
#pragma mark - <UIScrollViewDelegate>
/**
这个方法的返回值决定了要缩放的内容(返回值只能是UIScrollView的子控件)
*/
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return self.imageView;
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"缩放ing-----%f", scrollView.zoomScale);
}
@end
真机调试 可以实现内容缩放