2009-09-28 65 views
0

使用OS 3.1我在UIScrollView中放置了一个轻敲检测图像视图(取自Apple的Scroll View套件示例),并且想要在图像视图出现时放大两次图像视图。第一个缩放是为了使整个图像可见,第二个缩放是放大到指定的区域。我现在所拥有的是:背靠背UIScrollView缩放

- (void)viewDidLoad { 
    // After adding scroll view and image view 
    imageScrollView.minimumZoomScale = 0.5; 
    imageScrollView.maximumZoomScale = 2.75; 
    imageScrollView.zoomScale = 1.0; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1];  
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDelegate: self]; 
    [imageScrollView zoomToRect:[imageView frame] animated:YES]; 
    [UIView commitAnimations]; 

和下面以检测第一变焦结束,并触发第二:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { 
    selectedRect.origin.x = 60.0; 
    selectedRect.origin.y = 90.0; 
    selectedRect.size.width = 90.0; 
    selectedRect.size.height = 90.0; 

    imageScrollView.minimumZoomScale = 1.0; 
    imageScrollView.maximumZoomScale = 2.75; 
    imageScrollView.zoomScale = 2.5; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1];  
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDelegate: self]; 
    [imageScrollView zoomToRect:selectedRect animated:YES]; 
    [UIView commitAnimations]; 

什么情况是,这会导致一个无限循环和滚动在两个放大点之间反复查看“摆动”。我应该做什么不同?谢谢。

回答

1

当然你只需要检查当前的zoomScale作为scrollViewDidEndZooming中的第一个动作。如果您已经放大,请不要执行新的缩放。