2016-07-21 5 views
0

Ich habe Array von Bild, wenn ich den Index des Bildes von collectionView zu einem anderen ViewController, der dieses Bild im Vollbild angezeigt wird, und ich gebe dem Benutzer die Möglichkeit, zwischen den Bildern wischen aber das Problem auf dem Swipe Wischen zwischen den Bildern, wenn die Änderung sehr schnell ist Ich muss die Zeit auf UIImageView verzögern, wenn das Bild eine Lösung für dieses Problem geändert wird?Verzögerung Zeit auf UIImageView

der Code unter:

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 

Überschreibung func viewDidLoad() {

super.viewDidLoad() 

Imageview = UIImageView (Bild: 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 (Geste: 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])!) 

     } 
    } 
} 

Danke

Antwort

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

Vielen Dank, bitte, wo stelle ich diese Methode in Viewdidload? –

+0

versuchen Sie in der gleichen Methode –

+0

nicht arbeiten, ich versuche es –

0

Können Sie diesen Code in Ihre Swipe-Funktion versuchen? Ich hoffe, es funktioniert für dich genauso wie für mich.

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)