眾所周知通過設置
//設置最大比例
self.scrollView.maximumZoomScale=2;
//設置最小比例
self.scrollView.minimumZoomScale=0.2;
以及下面代碼中的代理來實現(xiàn)scrollview的縮放叉抡,但沒經(jīng)過處理的縮放會以左上角為坐標縮放,不符合很多產(chǎn)品需求,所以在- (void)scrollViewDidZoom:(UIScrollView*)scrollView方法中做了一些處理。因為縮放的時候會改變scrollView的contentsize大小,所以通過content size來調(diào)整目標視圖的位置是可取的抱虐。
Mark---因為縮放過程中也會調(diào)用scrollViewDidScroll,之前試過一次通過scrollViewDidScroll代理方法中設置layer的position屬性等方法設置中心縮放,會出現(xiàn)縮放后圖片邊緣和scrollview之間留有空白的問題逞刷,這個問題一直解決不了,于是乎采取以下方式妻熊,最終解決問題夸浅。
代碼如下
//? ViewController.m
//? scrollView縮放
//
//? Created by lilz on 17/2/17.
//? Copyright ? 2017年ZG. All rights reserved.
//
#import"ViewController.h"
#define kWidth [UIScreen mainScreen].bounds.size.width
#define kHeight [UIScreen mainScreen].bounds.size.height
//1.遵守代理協(xié)議
@interfaceViewController()
@property(weak,nonatomic)UIScrollView*scrollView;
@property(weak,nonatomic)UIImageView*iconView;
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
UIScrollView*scrollView = [[UIScrollViewalloc]initWithFrame:self.view.bounds];
self.scrollView= scrollView;
[self.viewaddSubview:scrollView];
self.scrollView.delegate=self;
//設置滾動范圍
self.scrollView.contentSize=CGSizeMake(375,667);
//設置最大比例
self.scrollView.maximumZoomScale=2;
//設置最小比例
self.scrollView.minimumZoomScale=0.2;
UIImageView*iconView = [[UIImageViewalloc]init];
self.iconView= iconView;
[self.scrollViewaddSubview:iconView];
self.iconView.frame=self.scrollView.frame;
iconView.image= [UIImageimageNamed:@"cir1"];
}
//當用戶進行捏合手勢的時候,它會詢問代理需要對其中那一個控件進行縮放
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView
{
returnself.iconView;
}
- (void)scrollViewDidZoom:(UIScrollView*)scrollView
{
CGFloatxcenter = scrollView.center.x, ycenter = scrollView.center.y;
//目前contentsize的width是否大于原scrollview的contentsize扔役,如果大于帆喇,設置imageview中心x點為contentsize的一半,以固定imageview在該contentsize中心亿胸。如果不大于說明圖像的寬還沒有超出屏幕范圍坯钦,可繼續(xù)讓中心x點為屏幕中點预皇,此種情況確保圖像在屏幕中心。
xcenter = scrollView.contentSize.width> scrollView.frame.size.width? scrollView.contentSize.width/2: xcenter;
ycenter = scrollView.contentSize.height> scrollView.frame.size.height? scrollView.contentSize.height/2: ycenter;
[_iconViewsetCenter:CGPointMake(xcenter, ycenter)];
}
@end