2009-09-28 9 views
0

En utilisant OS 3.1 Je place une vue d'image de détection de prise (prise des exemples de suite de défilement d'Apple) dans un UIScrollView et veux zoomer deux fois sur la vue d'image quand elle apparaît. Le premier zoom est de rendre l'image entière visible et le second zoom est de zoomer sur une région spécifiée. Ce que j'ai droit est maintenant:Dos à dos UIScrollView zoom

- (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]; 

et ce qui suit pour détecter la fin du premier zoom et pour déclencher le second:

- (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]; 

Ce qui se passe est que cela provoque une boucle infinie et le défilement voir "wiggles" à plusieurs reprises entre deux points zoomés. Que devrais-je faire différemment? Je vous remercie.

Répondre

1

Vous avez certainement besoin de vérifier le zoomScale actuel comme première action dans scrollViewDidEndZooming. Si vous avez déjà effectué un zoom avant, ne faites pas votre nouveau zoom.