智能手機一般常用常用的操作觸摸,滑動,縮放,感覺對於生活而言就是手機在手,天下我有,看網頁的時候字體太小,縮放一下,看美女的看的不爽,縮放一下,地圖看的不清,縮放一下。縮放是一個很常見的操作,不論是從生活還是寫程序而言,都是一個繞不開的東西,做了一個Demo,縮放一下美女,熟悉ScrollView中的常見屬性的設置,開始正題吧。
常見屬性
先看圖,要實現的效果:

UIImage *image=[UIImage imageNamed:@"girl0.jpg"];
_imageView=[[UIImageView alloc] initWithImage:image];
[_scrollView addSubview:_imageView];
//設置ScrollView和image是一樣的大小
[_scrollView setContentSize:image.size];
可以設置ScrollView的初始位置和大小:
//CGRect枚舉一個矩形,然后設置imageView的位置
[_imageView setFrame:CGRectMake(0, 0, 100, 100)];
設置邊界區域:
//設置邊界區域 [_scrollView setContentInset:UIEdgeInsetsMake(20, 20.0, 20.0, 20.0)];
上下左右移動調用哪個同意IBAction,通過Tag區分(之前文章有介紹),移動就是控制坐標,IOS中左上角是0,X軸向右自增,Y軸向下自增:
UIButton *button=(UIButton *)sender;
CGPoint currentPoint=self.scrollView.contentOffset;
switch (button.tag) {
case 0:
currentPoint.y-=50;
break;
case 1:
currentPoint.y+=50;
break;
case 2:
currentPoint.x-=50;
break;
case 3:
currentPoint.x+=50;
break;
default:
break;
}
//橫軸的邊界值
if (currentPoint.x<0) {
currentPoint.x=0;
}else if (currentPoint.x>_scrollView.contentSize.width-_scrollView.bounds.size.width){
currentPoint.x=_scrollView.contentSize.width-_scrollView.bounds.size.width;
}
//縱軸的邊界值
if (currentPoint.y<0) {
currentPoint.y=0;
}else if (currentPoint.y>_scrollView.contentSize.height-_scrollView.bounds.size.height){
currentPoint.y=_scrollView.contentSize.height-_scrollView.bounds.size.height;
}
//動畫效果
[self.scrollView setContentOffset:currentPoint animated:YES];
動畫效果可以通過block設置:
[UIView animateWithDuration:0.3f animations:
^{
[self.scrollView setContentOffset:currentPoint];
}];
縮放
縮放之前需要涉及到一個東西就是控制器需要遵守UIScrollViewDelegate協議,然后實現協議中方法,應用場景中如果我們在對ScrollView中圖片進行縮放,將消息通知給UIScrollViewDelegate,最終將事件實現委托給是實現方法:
// // ViewController.h // ScrollView // http://www.cnblogs.com/xiaofeixiang // Created by keso on 15/1/20. // Copyright (c) 2015年 keso. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @end
設置一下最大和最小縮放比例,設置委托:
[_scrollView setMinimumZoomScale:0.3];
[_scrollView setMaximumZoomScale:1.8];
[_scrollView setDelegate:self];
實現一個返回的圖像,如果不是實現,沒有效果:
//縮放過程中的圖像
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return _imageView;
}
有的時候如果可能有業務需要會需要一個縮放結束的方法:
////縮放結束
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
NSLog(@"縮放比例:%f",scale);
}
還有一個不常用的,縮放中的方法:
//縮放中
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"縮放中的調用~");
}
最終效果:

