2011-07-26 4 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 여러 이미지가 포함되어 있기 때문에, 제대로, 이미지가 겹쳐있어 작동하지 않았다.

어떻게 해결할 수 있습니까? 감사

답변

2

직접 대신에,이 방법을 수행있는 ScrollView에 이미지 뷰를 추가하지 마십시오 :

별도로 각 UIImageView에 대한 새로운있는 UIScrollView 개체를 확인하고 이미지보기와 동일하게 프레임을 설정을 . 이미지보기를 하위보기로 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]; 
} 

이 코드는 나를 :)