2016-04-01 2 views
0

Я здесь новый, и я тоже начинающий в Swift!Проводящий цикл массива UIImageView

Я пытаюсь создать UIImageView для прокрутки влево и вправо, когда я доберусь до последнего изображения с крахом приложения, тот же самый сбой произойдет, если я нахожусь на первом изображении и попытаюсь прокрутить направо! Что я хочу сделать, когда мой массив изображений достигнет последнего изображения, верните мне первое изображение в цикле, может ли кто-нибудь мне помочь? Спасибо заранее! Вот мой код;

FUNC прокатывается (жест: UIGestureRecognizer) { CATransaction.begin()

 CATransaction.setAnimationDuration(animationDuration) 
     CATransaction.setCompletionBlock { 
      let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(self.switchingInterval * NSTimeInterval(NSEC_PER_SEC))) 
      dispatch_after(delay, dispatch_get_main_queue()) { 
      } 


     } 

     let transition = CATransition() 
     transition.type = kCATransitionFade 
     chracters.layer.addAnimation(transition, forKey: kCATransition) 

     CATransaction.commit() 


     if let swipeGesture = gesture as? UISwipeGestureRecognizer { 

      switch swipeGesture.direction { 

      case UISwipeGestureRecognizerDirection.Right : 
       print("User swiped right") 

       // decrease index 

       imageIndex -= 1 


       // check if index is in range 

       if swipePosition > imageList.count-1{ 

       // Do Nothing 
       } else { 

        swipePosition += 1 
       } 
       chracters.image = UIImage(named: imageList[imageIndex]) 

      case UISwipeGestureRecognizerDirection.Left: 
       print("User swiped Left") 

       // increase index first 

       imageIndex += 1 

       // check if index is in range 

       if swipePosition == 0 { 

        //Do Nothing 
       } else { 

        swipePosition -= 1 
       } 

       chracters.image = UIImage(named: imageList[imageIndex]) 



      default: 
       break; 
       //stops the code 



      } 

     } 


    } 

ответ

1

Сначала ваше состояние, кажется amiguous, вы можете использовать сам swipePosition вместо ImageIndex. Во-вторых, ваш chracters.image должен находиться внутри блока if/else. Ниже приведен обновленный фрагмент. Если вы хотите использовать imageIndex, вы можете соответствующим образом изменить его. Также добавлен код для перехода от последнего изображения к первому изображению и первого изображения.

if swipePosition > imageList.count-1{ 
    swipePosition = 0 
    chracters.image = UIImage(named:imageList[swipePosition] 
} else { 
    chracters.image = UIImage(named:imageList[swipePosition] 
    swipePosition += 1 
} 

case UISwipeGestureRecognizerDirection.Left: 
print("User swiped Left") 
// check if index is in range 
if swipePosition == 0 { 
    swipePosition = imageList.count-1 
    chracters.image = UIImage(named:imageList[swipePosition] 
} else { 
    chracters.image = UIImage(named:imageList[swipePosition] 
    swipePosition -= 1 
} 
+0

Спасибо, работал :) – Matt

+0

Рад помочь. Если это сработает, вы можете отметить это как правильный ответ, чтобы другие люди, столкнувшиеся с одной и той же проблемой, могли воспользоваться этим. –

Смежные вопросы