概述
項目中有個功能用到了圖片的縮放。之前寫的方法是在imageView上面add了一個捏合手勢,然后根據(jù)pinch手勢的scale設(shè)置imageView的frame,效果不是很好,也沒有回彈效果。今天準備解決這個問題,于是各種查資料,找到了這個方法。
原理
在使用UIScrollView自帶的捏合手勢時,會回調(diào)
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView這個代理方法,這個代理方法返回的view就是需要縮放的view。
代碼
創(chuàng)建scrollView對象
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
scrollView.delegate = self;
//設(shè)置最大放大倍數(shù),默認是1.0
scrollView.maximumZoomScale = 3.0;
//設(shè)置最小縮小倍數(shù),默認是1.0
scrollView.minimumZoomScale = 0.5;
//設(shè)置默認縮放倍數(shù),默認是1.0
scrollView.zoomScale = 1.0;
//是否打開縮放回彈效果,默認是YES
scrollView.bouncesZoom = YES;
[self.view addSubview:scrollView];
聲明需要縮放的imageView對象,全局變量
@property (nonatomic, strong) UIImageView *imageView;
實例化對象
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
self.imageView.frame = scrollView.bounds;
[scrollView addSubview:self.imageView];
scrollView的代理方法
返回需要縮放的子視圖
#pragma mark - UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
//返回需要縮放的子視圖
return self.imageView;
}
縮放前調(diào)用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
//縮放前調(diào)用
}
正在縮放時調(diào)用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
//正在縮放時調(diào)用
}