2010-07-28 64 views
1

我正在關注Apple的ScrollSuite示例,但捏縮放無法正常工作。我不知道什麼是錯的:放大UIImageView的問題

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // set up main scroll view 
    imageScrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]]; 
    [imageScrollView setBackgroundColor:[UIColor blackColor]]; 
    [imageScrollView setDelegate:self]; 
    [imageScrollView setBouncesZoom:YES]; 
    [[self view] addSubview:imageScrollView]; 

    // add touch-sensitive image view to the scroll view 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"default.png"]]; 
    [imageView setTag:ZOOM_VIEW_TAG]; 
    [imageView setUserInteractionEnabled:YES]; 
    [imageScrollView setContentSize:[imageView frame].size]; 
    [imageScrollView addSubview:imageView]; 
    [imageView 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]; 

    //[self.imageView loadImageFromURL:self.url]; 
} 



// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    //return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    if (enableLandscapeOrientation) { 
     [[self navigationController] setNavigationBarHidden:UIInterfaceOrientationIsLandscape(interfaceOrientation) animated:YES]; 
     return YES; 
    } 
    else { 
     return NO; 
    } 
} 


#pragma mark UIScrollViewDelegate methods 

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

/************************************** NOTE **************************************/ 
/* The following delegate method works around a known bug in zoomToRect:animated: */ 
/* In the next release after 3.0 this workaround will no longer be necessary  */ 
/**********************************************************************************/ 
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { 
    [scrollView setZoomScale:scale+0.01 animated:NO]; 
    [scrollView setZoomScale:scale animated:NO]; 
} 

#pragma mark Utility methods 

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

    CGRect zoomRect; 

    // the zoom rect is in the content view's coordinates. 
    // At a zoom scale of 1.0, it would be the size of the imageScrollView's bounds. 
    // As the zoom scale decreases, so more content is visible, the size of the rect grows. 
    zoomRect.size.height = [imageScrollView frame].size.height/scale; 
    zoomRect.size.width = [imageScrollView frame].size.width/scale; 

    // choose an origin so as to get the right center. 
    zoomRect.origin.x = center.x - (zoomRect.size.width/2.0); 
    zoomRect.origin.y = center.y - (zoomRect.size.height/2.0); 

    return zoomRect; 
} 

回答

0

仔細檢查您的minimumScale值。根據該代碼並猜測「default.png」是什麼,我會說你的minimumScale可能是1.0,這意味着你的滾動視圖沒有縮放範圍。嘗試這樣做只是爲了看看它是否有效:

[imageScrollView setMinimumZoomScale:0.5f]; 
[imageScrollView setMaximumZoomScale:2.0f];