title: Expandable UICollectionViewCell
body: <p>I'm trying to program an expandable UICollectionViewCell.
  If the user presses the topbutton, the cell should expand to a different height and reveal the underlying content.</p>
  
  <p>My first implementation features a custom UICollectionViewCell, which can be expanded by clicking the topbutton, but the collectionview does not expand too. Atm. the cell is the last one in the collectionview and just by swiping down enough, you can see the expanded content. If you stop touching, the scrollview jumps up and nothing of the expanded cell could be seen.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>import Foundation
  import UIKit
  
  class ExpandableCell: UICollectionViewCell {
  
    @IBOutlet weak var topButton: IconButton!
  
    public var expanded : Bool = false
  
    private var expandedHeight : CGFloat = 200
  
    private var notExpandedHeight : CGFloat = 50
  
    @IBAction func topButtonTouched(_ sender: AnyObject) {
      if (expanded == true) {
        self.deExpand()
      } else {
        self.expand()
      }
    }
  
    public func expand() {
     UIView.animate(withDuration: 0.8, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseInOut, animations: {
        self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width, height: self.expandedHeight)
      }, completion: { success in
        self.expanded = true
      })
    }
  
    public func deExpand() {
      UIView.animate(withDuration: 0.8, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseInOut, animations: {
        self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width, height: self.notExpandedHeight)
      }, completion: { success in
        self.expanded = false
      })
    }
  }
  </code></pre>
  
  <p>I also have problems implementing the following method correctly, because I haven't got a direct reference to the cell:</p>
  
  <pre><code> func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -&gt; CGSize
  </code></pre>
  
  <p>Basicly everything should be animated.</p>
  
  <p>The screenshot shows an expanded and not expanded cell. Hope that helps!</p>
  
  <p><a href="https://i.stack.imgur.com/Vhr1y.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Vhr1y.png" alt="opened and closed cell"></a></p>
  
  <p>Thanks!</p>