在苹果的官方文档中,必须实现下面两个代理方法
1、-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
2、-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
在下面的代码中除了图片的缩放外,还让图片在缩放中保持居中。
/**
* 该方法是返回要进行缩放的view
*
* @param scrollView 当前的scrollview
*
* @return UIView
*/
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGSize totalSize = [UIScreen mainScreen].bounds.size;
/*
设置图片的位置
是因为在图片放大后,x和y不会在0位,造成图片左边会空出一块
*/
CGSize imageSize = self.imageView.frame.size;
CGRect imageRect = self.imageView.frame;
imageRect.origin.x = 0;
imageRect.origin.y = 0;
[self.imageView setFrame:imageRect];
//当图片的宽度大于界面的宽度,则设置scrollview的y偏移量,也就是让图片保持居中的位置
if (imageSize.height > totalSize.height) {
CGPoint offPoint = scrollView.contentOffset;
offPoint.y = (imageSize.height - totalSize.height) / 2;
[scrollView setContentOffset:offPoint];
}
}
/**
* 在缩放进行中,让图片的的中心点始终居中
*/
-(void)scrollViewDidZoom:(UIScrollView *)scrollView
{
CGSize totalSize = [UIScreen mainScreen].bounds.size;
CGSize imageSize = self.imageView.frame.size;
CGRect imageRect = self.imageView.frame;
if (imageSize.width < totalSize.width) {
imageRect.origin.x = totalSize.width / 2;
imageRect.origin.y = totalSize.height / 2;
[self.imageView setCenter:CGPointMake(imageRect.origin.x, imageRect.origin.y)];
}
}
/**
* 当缩放完成后的处理
*
* @param scrollView scrollView
* @param view 当前缩放的view,我这边是imageView,那这里就是imageView
* @param scale 缩放比例
*/
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
NSLog(@"缩放结束");
}