title: How to distinguish reason for UICollectionViewLayout's prepareLayout (iOS6)?
body: <p>AFAIK, the reason that cause UICollectionViewLayout restart layout process are:</p>
  
  <ul>
  <li><code>UICollectionView</code>'s frame change</li>
  <li><code>UICollectionView</code> reload data</li>
  <li><code>UICollectionView</code> insert/delete items</li>
  <li><code>UICollectionView</code>'s bound change (if shouldInvalidateLayoutForBoundsChange return YES)</li>
  </ul>
  
  <p>In my custom layout implementation, I want to change the <code>UICollectionViewLayoutAttributes</code> of certain items as the bound changes (stick header to the top like <code>UITableView</code>, animate item in/out .etc).</p>
  
  <p>Problem is that for whatever reason it is, the UICollectionView always call its layout object's <code>prepareLayout</code> method (which contains heavy layout computation) and that make jerky scrolling.</p>
  
  <p>I'm going for the solution that opt out the layout computation if the reason is <code>UICollectionView</code>'s bound change.</p>
  
  <p>How to check what reason the <code>prepareLayout</code> call?</p>