2012-05-17 1 views
3

J'utilise ICarousel pour faire mon album électronique. Lorsque vous faites glisser l'album, le paramètre par défaut d'ICarousel est qu'il se déplace à une certaine distance. Ce dont j'ai besoin est de glisser une fois pour une image seulement. J'ai trouvé ICarousel n'est pas basé sur ScrollView, donc je ne peux pas comprendre comment atteindre mon but, est quelqu'un qui le sait?Comment configurer ICarousel pour glisser une fois pour une image

Répondre

5

Je vous recommande de désactiver le défilement natif et d'attacher un PanGestureRecognizer qui utilise la méthode scrollByNumberofItems.

[iCarousel setScrollEnabled:NO]; 

Puis dans votre gestureRecognizer:

[iCarousel scrollByNumberOfItems:1 duration:0.25]; 

J'ai essayé moi-même et il fonctionnait très bien.

+0

Où écrivez-vous ce code? [iCarousel scrollByNumberOfItems: 1 durée: 0,25]; – Luda

+0

Où que vous ayez déterminé que vous souhaitez faire défiler le carrousel. Pour moi, je l'avais dans un PanGestureRecognizer. Lorsque le geste a été reconnu, j'ai déclenché le défilement du carrousel avec la ligne de code ci-dessus. – MobileVet

5

réponse Mise à jour avec les versions plus récentes de iCarousel:

iCarousel prend désormais en charge une seule page balayant en définissant pagingEnabled = OUI.

0

j'ai réalisé que pour le type iCarouselTypeCoverFlow en définissant:

//In ViewController.m 
self.carousel.pagingEnabled = YES; 


//In iCarousel.m change for smooth animation 
-(void)scrollByOffset:(CGFloat)offset duration:(NSTimeInterbal)duration{ 
    if (duration > 0.0) 
    { 
     _decelerating = NO; 
     _scrolling = YES; 
     _startTime = CACurrentMediaTime(); 
     _startOffset = _scrollOffset; 
//  _scrollDuration = duration; 
// set constant duration instead 
     _scrollDuration = 1.0; 
     _endOffset = _startOffset + offset; 
     if (!_wrapEnabled) 
     { 
      _endOffset = [self clampedOffset:_endOffset]; 
     } 
     [_delegate carouselWillBeginScrollingAnimation:self]; 
     [self startAnimation]; 
    } 
    else 
    { 
     self.scrollOffset += offset; 
    } 
} 
0

Modifier le code source iCarousel fichier iCarousel.m peut le faire!

- (void)didPan:(UIPanGestureRecognizer *)panGesture { 

...... 

    case UIGestureRecognizerStateChanged: { 
      CGFloat translation = _vertical? [panGesture translationInView:self].y: [panGesture translationInView:self].x; 

      translation = translation * 0.35; // Add This line to change the really translation. 

      ...... 
    } 
} 

Ce résoudre mon problème, espoir pour vous aider!

Questions connexes