[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]

简要代码:

  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. #import "ISViewController.h"
  9. @interface ISViewController ()<UIScrollViewDelegate>
  10. @end
  11. @implementation ISViewController
  12. @synthesize scrollView=_scrollView;
  13. @synthesize imageView=_imageView;
  14. - (void)viewDidLoad
  15. {
  16. [super viewDidLoad];
  17. //设置UIScrollViewDelegate
  18. self.scrollView.delegate=self;
  19. self.scrollView.contentSize=self.imageView.image.size;
  20. self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
  21. self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
  22. //如果不加这句的话
  23. //那么正常拖动是可以的,但是如果zoom了 就会有问题
  24. //zoom发生后会把frame变成当前显示大小[imageview默认大小 屏幕显示大小 如是全屏则就是全屏大小] zoom变化导致frame同步改变了image的size 大小为frame大小
  25. //image 的size改变后导致self.scrollView.contentSize 变成了frame的大小  从而contentSize变小了 无法实现正常拖动。
  26. //然后根据zoom缩放比例变化。而不是根据实际图片大小。这么导致zoom后就无法拖动了[因为frame大小]
  27. }
  28. - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
  29. //返回需要zoom的view
  30. {
  31. //如果想要scrollview 实现缩放 则需要给scrollview.delegate 对一个UIScrollViewDelegate 对象
  32. //且 此对象需要覆写viewForZoomingInScrollView 方法。
  33. //总结:只有 scrollview的delegate复写了viewForZoomingInScrollView scrollview才会缩放。
  34. return self.imageView;
  35. }
  36. - (void)didReceiveMemoryWarning
  37. {
  38. [super didReceiveMemoryWarning];
  39. self.scrollView=nil;
  40. self.imageView=nil;
  41. }
  42. @end
上一篇:linux配置java环境变量(详细) [转]


下一篇:CSS从大图片上截取小图标的操作以及三角形的画法