2012-05-21 4 views
3

팝업보기에서 이미지를 확대하고 싶습니다.UIImageView가 확대되지 않습니다.

ZoomView.h : this 샘플 코드를 기반으로 내가 UIView의 서브 클래스를 생성 한

,

@interface ZoomView : UIView <UIScrollViewDelegate> { 
    UIScrollView *imageScrollView; 
    UIImageView *imageView; 
} 
@property (strong, nonatomic) IBOutlet UIScrollView *imageScrollView; 
@property (strong, nonatomic) IBOutlet UIImageView *imageView; 

@end 

ZoomView.m : 내 코코아 콩 파일에서

#import "ZoomView.h" 

#define ZOOM_VIEW_TAG 100 
#define ZOOM_STEP 1.5 

@interface ZoomView (UtilityMethods) 
- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center; 
@end 

@implementation ZoomView 
@synthesize imageScrollView; 
@synthesize imageView; 


- (void)awakeFromNib{ 

} 

#pragma mark - View lifecycle 

- (void)loadView 
{ 
    [imageView setTag:ZOOM_VIEW_TAG]; 

    // add gesture recognizers to the image view 
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; 
    UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerTap:)]; 

    [doubleTap setNumberOfTapsRequired:2]; 
    [twoFingerTap setNumberOfTouchesRequired:2]; 

    [imageView addGestureRecognizer:singleTap]; 
    [imageView addGestureRecognizer:doubleTap]; 
    [imageView addGestureRecognizer:twoFingerTap]; 

    [singleTap release]; 
    [doubleTap release]; 
    [twoFingerTap release]; 

    // calculate minimum scale to perfectly fit image width, and begin at that scale 
    float minimumScale = [imageScrollView frame].size.width/[imageView frame].size.width; 
    [imageScrollView setMinimumZoomScale:minimumScale]; 
    [imageScrollView setZoomScale:minimumScale]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return YES; 
} 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return [imageScrollView viewWithTag:ZOOM_VIEW_TAG]; 
} 

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { 
    [scrollView setZoomScale:scale+0.01 animated:NO]; 
    [scrollView setZoomScale:scale animated:NO]; 
} 

#pragma mark TapDetectingImageViewDelegate methods 

- (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer { 
    // single tap does nothing for now 
} 

- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer { 
    // double tap zooms in 
    float newScale = [imageScrollView zoomScale] * ZOOM_STEP; 
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]]; 
    [imageScrollView zoomToRect:zoomRect animated:YES]; 
} 

- (void)handleTwoFingerTap:(UIGestureRecognizer *)gestureRecognizer { 
    // two-finger tap zooms out 
    float newScale = [imageScrollView zoomScale]/ZOOM_STEP; 
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:[gestureRecognizer locationInView:gestureRecognizer.view]]; 
    [imageScrollView zoomToRect:zoomRect animated:YES]; 
} 

#pragma mark Utility methods 

- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center { 
    CGRect zoomRect; 

    zoomRect.size.height = [imageScrollView frame].size.height/scale; 
    zoomRect.size.width = [imageScrollView frame].size.width/scale; 

    zoomRect.origin.x = center.x - (zoomRect.size.width/2.0); 
    zoomRect.origin.y = center.y - (zoomRect.size.height/2.0); 

    return zoomRect; 
} 

@end 

, I 뷰의 클래스를 ZoomView로 설정하고, 뷰 (뷰 : imageScrollView, imageViewdelegate)를 연결했지만, de, 이미지가 확대되지 않습니다. 나는 무엇을 생략 했는가?

+0

최소/최대 줌을 IB로 설정 했습니까? – nielsbot

+0

(스크롤 뷰에서) – nielsbot

+0

예, 최대 및 최대 줌도 설정했습니다. – MMMM

답변

0

작은 이미지를 찍은 것 같습니다. 더 큰 이미지를 가져와야합니다. 나는 그것이 효과가있을 것이라고 생각합니다. 그렇게하십시오.

0

imageScrollView에서 자체 위임을 시도해보십시오. -> imageScrollView.delegate = 자기;

관련 문제