2011-07-26 19 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)]; 

どのように私はScrollViewズーム可能な使用してマルチタッチを行うことができますか? が、私はこのコードを使用:

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

をしかし、それは正しく動作しませんでしたScrollViewは、複数の画像が含まれているため、画像は、重複してしまいました。

どうすれば修正できますか?

イメージ図と同じになるように個別に各UIImageViewのための新たなUIScrollViewのオブジェクトを作成し、フレームを設定します。 おかげ

答えて

2

ではなく、それをこのように行う、直接scrollviewに画像ビューを追加しないでください。スクロールビューに画像ビューをサブビューとして追加します。これらのスクロール・ビュー・オブジェクトはイメージのみをズームするために使用されるので、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]; 
} 

このコードは、私のために働いた:)

関連する問題