2016-03-28 5 views
1

Ich habe eine benutzerdefinierte UICollectionViewCell mit einem benutzerdefinierten Label drin. Wenn der Benutzer auf die Zelle tippt, möchte ich das Aussehen des benutzerdefinierten Labels animieren. Ich habe versucht, eine Referenzvariable zu behalten und collectionView.reloadData() aufzurufen, aber in meinem cellForItemAtIndexPath wird das Update nicht animiert. Eher passiert es sofort. Wie kann ich die Schrift- und Größenänderungen des Etiketts animieren?Animieren von UICollectionViewCell Label auf Auswahl

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

     self.flatPicker.reloadData() 
     self.variable = indexPath.row 

} 

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

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

     cell.label.text = self.array[indexPath.row] 

     if indexPath.row == variable { 

      UIView.animateWithDuration(2, animations: { 

       cell.label.font = UIFont.boldSystemFontOfSize(12) 
       cell.label.textColor = UIColor.darkGrayColor() 

      }) 


     } else { 

      UIView.animateWithDuration(2, animations: { 

       cell.label.font = UIFont.systemFontOfSize(11) 
       cell.label.textColor = UIColor.lightGrayColor() 

      }) 

     } 

     return cell 
    } 
+0

Nicht neu laden ... den Verweis in didSelectItemAtIndexPath abrufen und nur diese Zelle animieren. Ich bin nicht sicher, aber ich denke, es ist eine Methode, cellForRowAtIndexPath, und nach, dass Sie die Referenz im didSelectItemAtIndexPath bekommen können, und es animieren. – UlyssesR

Antwort

0

Schriftarten und Textfarben sind nicht animierbar.

Was Sie tun können, ist zwei Etiketten auf der jeweils anderen Schicht entweder mit den fett/regelmäßigen Attribute und Cross-Fade zwischen den beiden .alpha

0

Verwendung Sie sollten nicht die ausgewählte Zelle in cellForItemAtIndexPath acccess sondern in didSelectItemAtIndexPath .

die aktuell ausgewählte Zelle Retreive und animieren es wie so

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    let cell = collectionView.cellForItemAtIndexPath(indexPath) 
    cell.label.font = UIFont.boldSystemFontOfSize(12) 
    cell.label.textColor = UIColor.darkGrayColor() 

}

Wie David sagte Schriften und Farben sind nicht animierbaren Eigenschaften.