首页 > 代码库 > [ios]scrollView实现移动与缩放

[ios]scrollView实现移动与缩放

实现滑动

1.在viewDidLoad中对scrollview的contentSize属性赋值 告诉他滑动范围。

 

实现缩放

1.在storyboard的scrollview的attribute标签中设置zoom的范围。

2.实现一个UIScrollViewDelegate[scrollview的委托],并将其在viewDidLoad中传给scrollview

3.实现UIScrollViewDelegate 需要复写- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

这个方法返回需要zoom的view。

 

注意:如果使用缩放  且缩放的view大于屏幕

则必须要设置所需要缩放的view的fram 否则 zoom过程中会将view的frame改变 从而改变到了 image的size 导致scrollView 的contentSize 改变 影响滑动效果。 

所以每次使用zoom的时候 需要变化的view需要设置它的frame.szie与它的内容大小绑定[如imageView 的image.size]

 

 

简要代码:

 

Oc代码 复制代码 收藏代码
  1. //  
  2. //  ISViewController.m  
  3. //  ImageInScrollView  
  4. //  
  5. //  Created by liu poolo on 12-10-12.  
  6. //  Copyright (c) 2012年 liu poolo. All rights reserved.  
  7. //  
  8.   
  9. #import "ISViewController.h"  
  10.   
  11. @interface ISViewController ()<UIScrollViewDelegate>  
  12.   
  13. @end  
  14.   
  15. @implementation ISViewController  
  16. @synthesize scrollView=_scrollView;  
  17. @synthesize imageView=_imageView;  
  18. - (void)viewDidLoad  
  19. {  
  20.     [super viewDidLoad];  
  21.       
  22.     //设置UIScrollViewDelegate  
  23.     self.scrollView.delegate=self;  
  24.       
  25.       
  26.     self.scrollView.contentSize=self.imageView.image.size;  
  27.     self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);  
  28.     
  29.   
  30.   
  31.   
  32.   
  33.   
  34.   
  35.   
  36.   
  37.   
  38.   
  39.  self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);  
  40.   
  41.     //如果不加这句的话  
  42.   
  43.     //那么正常拖动是可以的,但是如果zoom了 就会有问题  
  44.   
  45.     //zoom发生后会把frame变成当前显示大小[imageview默认大小 屏幕显示大小 如是全屏则就是全屏大小] zoom变化导致frame同步改变了image的size 大小为frame大小  
  46.   
  47.     //image 的size改变后导致self.scrollView.contentSize 变成了frame的大小  从而contentSize变小了 无法实现正常拖动。  
  48.   
  49.     //然后根据zoom缩放比例变化。而不是根据实际图片大小。这么导致zoom后就无法拖动了[因为frame大小]  
  50.   
  51.   
  52.   
  53.   
  54.       
  55.   
  56.   
  57. }  
  58.   
  59. - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView  
  60.     //返回需要zoom的view  
  61. {  
  62.     //如果想要scrollview 实现缩放 则需要给scrollview.delegate 对一个UIScrollViewDelegate 对象  
  63.     //且 此对象需要覆写viewForZoomingInScrollView 方法。  
  64.     //总结:只有 scrollview的delegate复写了viewForZoomingInScrollView scrollview才会缩放。  
  65.     return self.imageView;  
  66.       
  67. }  
  68.   
  69. - (void)didReceiveMemoryWarning  
  70. {  
  71.     [super didReceiveMemoryWarning];  
  72.     self.scrollView=nil;  
  73.     self.imageView=nil;  
  74. }  
  75.   
  76. @end  

[ios]scrollView实现移动与缩放