2016-04-10 19 views
2

Ich versuche, die Höhe der Zellen in einem UICollectionView zu ändern, wenn die Zelle ausgewählt ist.Sammlungsansicht Zellgröße ändern

Ich habe es geschafft, die Höhe zu ändern, aber wenn ich eine Zelle auswähle, ändert sich die y Position der anderen nicht, was dazu führt, dass die ausgewählte Zelle die anderen überlappt.

Wie könnte die anderen Zellen sagen, um die y-Position zu ändern, wird die a-Zelle geändert?

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

     if let detailsCell = collectionView.cellForItemAtIndexPath(indexPath) as? UserDetailsCell { 

      UIView.animateWithDuration(0.5, delay: 0, options: .TransitionCurlUp, animations: { 

       detailsCell.frame.size.height = 300 

       }, completion: nil) 

     } 


     print(indexPath.row) 
    } 

Antwort

1

das Problem hier ist es, dass Sie eine einzelne Zelle/Artikel behandeln individualy, sollten Sie nur die ganze Arbeit zu tun, verwenden automatische Layout.

Legen Sie die Größe der Zelle/Punkt auf der Delegierten:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if let selectedRows = tableView.indexPathsForSelectedRows { 
     if selectedRows.contains(indexPath) { 
      return 300 
     } 
    } 
    return 40 
} 

Und bei der Auswahl, zwingen Sie nur ein Update auf das Layout.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.beginUpdates() 
    tableView.endUpdates() 
} 
+0

Vielen Dank !! im Collect-View-Delegat zähle ich jedoch "heightForRowAtIndexPath" – SNos

+0

Wenn Sie nicht einfach eine UItableView verwenden können, müssen Sie ein UICollectionViewFlowLayout erstellen, das ist viel mehr Arbeit, ich empfehle, wenn möglich nach UITableView zu migrieren. –

+1

Überprüfen Sie diesen Delegaten: collectionView: layout: sizeForItemAtIndexPath: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewDelegateFlowLayout_protocol/ –

Verwandte Themen