0

Problem: Reloaded gecached UIImageView in einem UICollectionViewCell (während oder Umschalten zwischen UICollectionViewController Scrollen) nicht der richtige contentMode erhalten.Konserve Seitenverhältnis des Bildes in UICollectionViewCell

Ich versuchte mit .sizeToFit() auf die UIImageView und das Zurücksetzen von .contentMode = UIViewContentMode.ScaleAspectFit bei jedem Laden, aber das half nicht.

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> MyCollectionViewCell { 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath) as! MyCollectionViewCell 

    if (indexPath.item < self.the_array?.count){ 

     if (images_cache[self.the_array![indexPath.item].src!] != nil){ 
      // calling this here doesn't work 
      cell.myImage.contentMode = UIViewContentMode.ScaleAspectFit 
      // calling this here doesn't work either 
      cell.myImage.sizeToFit() 
      cell.myImage.image = images_cache[self.the_array![indexPath.item].src!]! as UIImage 
     } 
     else{ 
      if let url = NSURL(string: "https:" + (self.the_array![indexPath.item].src)!), data = NSData(contentsOfURL: url) { 
       let the_image = UIImage(data: data) 
       cell.myImage.image = the_image 
       images_cache[self.the_array![indexPath.item].src!] = the_image! 
      } 
     } 
    } 
    return cell 
} 

Antwort

0

Lösung: die .frame des UIImage basierend auf der Größe der Zelle!

cell.myImage.frame = CGRect(x: 0, y: 0, width: cell.frame.width, height: cell.frame.height) 

habe ich diese Zeile, wo ich .sizeToFit hatte() und/oder .contentMode und jetzt bewahrt es die richtig Bilder.