实现滑动
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]
简要代码:
//
// ISViewController.m
// ImageInScrollView
//
// Created by liu poolo on 12-10-12.
// Copyright (c) 2012年 liu poolo. All rights reserved.
//
#import "ISViewController.h"
@interface ISViewController ()<UIScrollViewDelegate>
@end
@implementation ISViewController
@synthesize scrollView=_scrollView;
@synthesize imageView=_imageView;
- (void)viewDidLoad
{
[super viewDidLoad];
//设置UIScrollViewDelegate
self.scrollView.delegate=self;
self.scrollView.contentSize=self.imageView.image.size;
self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
//如果不加这句的话
//那么正常拖动是可以的,但是如果zoom了 就会有问题
//zoom发生后会把frame变成当前显示大小[imageview默认大小 屏幕显示大小 如是全屏则就是全屏大小] zoom变化导致frame同步改变了image的size 大小为frame大小
//image 的size改变后导致self.scrollView.contentSize 变成了frame的大小 从而contentSize变小了 无法实现正常拖动。
//然后根据zoom缩放比例变化。而不是根据实际图片大小。这么导致zoom后就无法拖动了[因为frame大小]
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
//返回需要zoom的view
{
//如果想要scrollview 实现缩放 则需要给scrollview.delegate 对一个UIScrollViewDelegate 对象
//且 此对象需要覆写viewForZoomingInScrollView 方法。
//总结:只有 scrollview的delegate复写了viewForZoomingInScrollView scrollview才会缩放。
return self.imageView;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
self.scrollView=nil;
self.imageView=nil;
}
@end
本文介绍如何在iOS应用中使用UIScrollView实现图片的滚动和缩放功能。重点讲解了通过设置scrollView的contentSize来定义滚动范围,并通过实现UIScrollViewDelegate方法来指定缩放视图,确保缩放过程中图片大小不变形。
1万+

被折叠的 条评论
为什么被折叠?



