ScrollView图片缩放

智能手机一般常用常用的操作触摸,滑动,缩放,感觉对于生活而言就是手机在手,天下我有,看网页的时候字体太小,缩放一下,看美女的看的不爽,缩放一下,地图看的不清,缩放一下。缩放是一个很常见的操作,不论是从生活还是写程序而言,都是一个绕不开的东西,做了一个Demo,缩放一下美女,熟悉ScrollView中的常见属性的设置,开始正题吧。

常见属性

先看图,要实现的效果:

  

1
2
3
4
5
6
7
UIImage *image=[UIImage imageNamed:@ "girl0.jpg" ];
 
_imageView=[[UIImageView alloc] initWithImage:image];
 
[_scrollView addSubview:_imageView];
//设置ScrollView和image是一样的大小
[_scrollView setContentSize:image.size];

 可以设置ScrollView的初始位置和大小:

1
2
//CGRect枚举一个矩形,然后设置imageView的位置
[_imageView setFrame:CGRectMake(0, 0, 100, 100)];

设置边界区域:

1
2
//设置边界区域
[_scrollView setContentInset:UIEdgeInsetsMake(20, 20.0, 20.0, 20.0)];

 上下左右移动调用哪个同意IBAction,通过Tag区分(之前文章有介绍),移动就是控制坐标,IOS中左上角是0,X轴向右自增,Y轴向下自增:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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设置:

1
2
3
4
[UIView animateWithDuration:0.3f animations:
^{
      [ self .scrollView setContentOffset:currentPoint];
}];

缩放

缩放之前需要涉及到一个东西就是控制器需要遵守UIScrollViewDelegate协议,然后实现协议中方法,应用场景中如果我们在对ScrollView中图片进行缩放,将消息通知给UIScrollViewDelegate,最终将事件实现委托给是实现方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
//  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

设置一下最大和最小缩放比例,设置委托:

1
2
3
[_scrollView setMinimumZoomScale:0.3];
[_scrollView setMaximumZoomScale:1.8];
[_scrollView setDelegate: self ];

实现一个返回的图像,如果不是实现,没有效果:

1
2
3
4
//缩放过程中的图像
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
     return _imageView;
}

有的时候如果可能有业务需要会需要一个缩放结束的方法:

1
2
3
4
缩放结束
- ( void )scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
     NSLog (@ "缩放比例:%f" ,scale);
}

还有一个不常用的,缩放中的方法:

1
2
3
4
//缩放中
- ( void )scrollViewDidZoom:(UIScrollView *)scrollView{
     NSLog (@ "缩放中的调用~" );
}

 最终效果:

连接地址: http://www.cnblogs.com/xiaofeixiang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值