2017-08-10 4 views
0

J'utilise iCarousel dans Swift 3 dans Xcode. J'essaye de le faire fonctionner comme une bannière glissante. J'ai cette fonction:Répétition du défilement d'iCarousel

func animate() { 
    DispatchQueue.global(qos: .userInteractive).async { 
     self.carousel.scrollToItem(at: 0, animated: false) 

     while(true){ 
      sleep(3) 
      self.carousel.scroll(byNumberOfItems: 1, duration: 0.3) 
     } 
    } 
} 

Je l'appelle dans viewDidLoad. Cela fonctionne mais je pense que ce n'est pas aussi bon qu'il pourrait l'être. Après avoir basculé vers une autre vue, le défilement continue et continue. Quelle serait la meilleure approche pour faire défiler seulement, quand je vois la vue, que le carrousel est dedans?

+1

Peut être qu'il serait utile https://stackoverflow.com/questions/44950769/autoscrolling-infinite-effect-in-linear-type-of-icarousel -in-swift/44951362 # 44951362 –

+0

aussi, besoin de plus d'explications. –

+0

ce lien a été utile, merci –

Répondre

0

Ce qui a résolu le problème:

var timer: Timer! 

self.timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.handleTimer), userInfo: nil, repeats: true) 

func handleTimer(){ 
     self.carousel.scroll(byNumberOfItems: 1, duration: 0.3) 
    }