2016-05-23 3 views
0

Ich lade Bilder Suchergebnisse aus dem Web, aber sie scheinen nicht richtig zu animieren. Um dies zu tun, ändere ich einfach das imageView Bild von Null auf das Plakat in einem UIView.animateWithDuration(1.0){} Aufruf. Aber anstatt zu animieren, erscheint es sofort an seinem Platz.UIView animateWithDuration animiert nicht, es lädt nur

Hier ist der Code:

//Poster 
//Set the poster first as blank 
cell.poster.image = nil 
//If I'm provided with a poster path, load an image. 
if let imagePath = matchingItems[indexPath.row]["poster_path"] as? String { 
    //Sessions and Stuff for request 
    let url = NSURL(string: "http://i.imgur.com/b3DKTX2.png") 
    let urlRequest = NSURLRequest(URL: url!) 
    let session = NSURLSession.sharedSession() 

    //Asynchronous Request: 
    let dataTask = session.dataTaskWithRequest(urlRequest, completionHandler: { (data, response, error) -> Void in 
     if let poster = UIImage(data: data!) { 
      dispatch_async(dispatch_get_main_queue()) { 
       //Animate the poster in 
       UIView.animateWithDuration(1.0) { 
        cell.poster.image = poster 
       } 
      } 
     } 
    }) 

    dataTask.resume() 
} else { 
    //Just use placeholder if no image exists 
    cell.poster.image = UIImage(named: "Placeholder.jpg") 
} 
+2

Welche Wirkung wollen Sie erreichen? Die Image-Eigenschaft von "UIImageView" ist nicht animierbar. – rmaddy

+0

Ich habe das buchstäblich gelesen, ich fühle mich wie ein Idiot. – QuantumHoneybees

+0

Ich möchte nur, dass das neue Bild eingeblendet wird, anstatt es sofort zu öffnen – QuantumHoneybees

Antwort

1

Sie können nicht die Einstellung der image Eigenschaft eines UIImageView animieren. Da das Bild eingeblendet werden soll, animieren Sie die Eigenschaft alpha.

Etwas wie folgt aus:

cell.poster.alpha = 0.0 // hide it 
cell.poster.image = poster // set it 
UIView.animateWithDuration(1.0) { 
    cell.poster.alpha = 1.0 // fade it in 
} 
+0

Wow, das funktioniert perfekt, danke! – QuantumHoneybees