2016-07-21 4 views
0

У меня есть массив изображений, когда я отправляю индекс изображения из коллекцииView в другой viewController, который отображает это изображение в полноэкранном режиме, и я даю пользователю возможность прокручивать между изображениями, но проблема с саблейным номером прокручивать между изображениями при изменении очень быстро, мне нужно задерживать время в UIImageView, когда изображение изменено любым решением по этой проблеме?Время задержки на UIImageView

код ниже:

var ImageIndex:Int = 0 // this is index image which i send it from previous view controller 
var arrayOfUrlImageLarge:[String] = []// this array which contain all the url of images 

переопределение FUNC viewDidLoad() {

super.viewDidLoad() 

ImageView = UIImageView (изображение: UIImage (contentsOfFile: arrayOfUrlImageLarge [ImageIndex]))

imageView.contentMode = UIViewContentMode.ScaleAspectFill 

    let swipeGestureRight = UISwipeGestureRecognizer(target: self, action: #selector(ShowImageViewController.swipe(_:))) 
    swipeGestureRight.direction = .Right 
    let swipeGestureLeft = UISwipeGestureRecognizer(target: self, action: #selector(ShowImageViewController.swipe(_:))) 
    swipeGestureLeft.direction = .Left 
    self.imageView.addGestureRecognizer(swipeGestureLeft) 
    self.imageView.addGestureRecognizer(swipeGestureRight) 
} 

func swipe (gesture: UISwipeGestureRecognizer) {

if gesture.direction == .Right { 

     if ImageIndex == 0 { 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     }else { 
      ImageIndex = ImageIndex - 1 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     } 
    } 
    if gesture.direction == .Left{ 

     if ImageIndex >= arrayOfUrlImageLarge.count { 
      ImageIndex = arrayOfUrlImageLarge.count - 1 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     }else { 
      ImageIndex = ImageIndex + 1 
      if ImageIndex >= arrayOfUrlImageLarge.count { 
       return 
      } 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 

     } 
    } 
} 

Спасибо

ответ

0
func swipe(gesture:UISwipeGestureRecognizer){ 

    let delay = 4.5 * Double(NSEC_PER_SEC) 
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
    dispatch_after(time, dispatch_get_main_queue()) { 

     if gesture.direction == .Right { 

     if ImageIndex == 0 { 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     } 
     else { 
      ImageIndex = ImageIndex - 1 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     } 
     } 
     if gesture.direction == .Left{ 

     if ImageIndex >= arrayOfUrlImageLarge.count { 
      ImageIndex = arrayOfUrlImageLarge.count - 1 
      imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     } 
     else { 
     ImageIndex = ImageIndex + 1 
     if ImageIndex >= arrayOfUrlImageLarge.count { 
      return 
     } 
     imageView.image = UIImage(data: NSData(contentsOfFile: arrayOfUrlImageLarge[ImageIndex])!) 
     } 

     } 
    } 
} 
+0

Большое спасибо, где я помещаю этот метод в viewdidload? –

+0

попробуйте тот же метод –

+0

не работает, я попробую –

0

Вы можете попробовать этот код в функции красть? Надеюсь, это сработает для вас, как и для меня.

imageView.image = nil 
UIView.animateWithDuration(0.5, delay: 0.5, options: nil, animations: { 
    // your if-else swipe function for setting up the image on UIImageView 
}, completion: nil)