背景:因为Apple的放大缩小的手势没有最小值和最大值的限制,用户体验不好,因此用UIScrollView 来代替。
先上代码
在viewDidLoad中
//zoom
self.scrollZoom = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 43, 1024, 705)];
self.scrollZoom.scrollEnabled = YES;
self.scrollZoom.backgroundColor = [UIColor grayColor];
self.scrollZoom.delegate = self;
self.scrollZoom.showsHorizontalScrollIndicator = NO;
self.scrollZoom.showsVerticalScrollIndicator = NO;
self.scrollZoom.minimumZoomScale = 1.0;
self.scrollZoom.maximumZoomScale = 3.0;
[self.scrollZoom setZoomScale:1.0];
zoomView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 1024, 705)];
[zoomView setImage:[UIImage imageNamed:@"1.png"]];
[self.scrollZoom addSubview:zoomView];
[self.view addSubview:self.scrollZoom];
//zoom
- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center {
CGRect zoomRect;
zoomRect.size.height = [self.scrollZoom frame].size.height / scale;
zoomRect.size.width = [self.scrollZoom frame].size.width / scale;
zoomRect.origin.x = center.x - (zoomRect.size.width / 2.0);
zoomRect.origin.y = center.y - (zoomRect.size.height / 2.0);
return zoomRect;
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
[scrollView setZoomScale:scale+0.01 animated:NO];
[scrollView setZoomScale:scale animated:NO];
}
//重要!不可缺少
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return zoomView;
}
原理:在viewDidLoad中设置最大限制和最小限制,主要功能通过viewForZoomingInScrollView函数实现功能。