2011-07-26 100 views
0

我有UIScrollView包含3 * UIImageView,每个UIImageView都有一个图像。 码我用:UIScrollView + UIImageView放大/缩小

scrollView.delegate = self; 

[self.scrollView setBackgroundColor:[UIColor blackColor]]; 
[scrollView setCanCancelContentTouches:NO]; 

scrollView.maximumZoomScale = 4.0; 
scrollView.minimumZoomScale = 0.75; 

scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
scrollView.clipsToBounds = YES; 
scrollView.scrollEnabled = YES; 
scrollView.pagingEnabled = YES; 

NSUInteger nimages = 0; 
CGFloat cx = 0; 
for (; ; nimages++) { 
    NSString *imageName = [NSString stringWithFormat:@"%d.jpg", (nimages + 1)]; 

    UIImage *image = [UIImage imageNamed:imageName]; 

    if (image == nil) { 
    break; 
    } 

    imageView = [[UIImageView alloc] initWithImage:image];   
    CGRect rect = imageView.frame; 
    rect.size.height = image.size.height; 
    rect.size.width = image.size.width; 
    rect.origin.x = ((scrollView.frame.size.width - image.size.width)/2) + cx; 
    rect.origin.y = ((scrollView.frame.size.height - image.size.height)/2); 
    [imageView setFrame:CGRectMake(cx, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

    [scrollView addSubview:imageView]; 
    [imageView release]; 

    cx += scrollView.frame.size.width; 
} 

[scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)]; 

我怎样才能使滚动型使用变焦能够多点触控? 我用这个代码:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return imageView; 
} 

但它并没有正常工作,图像重叠得到,因为滚动型包含多张图片。

我该如何解决? 感谢

回答

2

不要添加图像视图滚动视图直接,而是做这种方式:

分别为每位UIImageView的一个新的UIScrollView对象,并设置框架与图像视图相同。将图像视图作为子视图添加到滚动视图。请记住,这些滚动视图对象仅用于缩放图像,因此请设置zoomScale,minimumZoomScale和maximumZoomScale,并设置滚动代理。在委托控制器:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
return [scrollView.subViews objectAtIndex:0]; 
} 

然后,所有的滚动视图对象添加到您在代码中使用的滚动视图。此滚动视图仅用于滚动上面创建的子滚动视图。

有想法吗?

+0

子视图没有子视图;) – Bejil

0

你可以使用PinchGesture到你的图像视图... 没有必要使用3个滚动视图。

0

尝试此为您3张图片:

**.h Controller:** 

@interface MyViewController : UIViewController{ 

IBOutlet UIScrollView *scrollView; 
UIImageView *imageView; 

} 

@property (nonatomic, retain) UIScrollView *scrollView; 
@property (nonatomic, retain) UIImageView *imageView; 

.M控制器:

@synthesize scrollView, imageView; 


-(UIView *)viewForZoomingInScrollView:(UIScrollVi­ew *)scrollView{ 

return imageView; 

} 

- (void)viewDidLoad 
{ 

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"YourImageName.png"]]; 
self.imageView = tempImageView; 
[tempImageView release]; 
scrollView.maximumZoomScale = 3.0; 
scrollView.minimumZoomScale = 0.6; 
scrollView.clipsToBounds = YES; 
scrollView.delegate = self; 
[scrollView addSubview:imageView]; 
} 

此代码为我工作:)