title: UICollectionViewCell fails to relayout its subviews when UICV layout is invalidated
body: <p>I wrote a more <a href="http://aplus.rs/2015/uicollectionviewcell-woes-with-bounds-change/" rel="nofollow">detailed blog post</a> on this problem, but here's the gist. I have embedded UICollectionView inside another UIViewController. When the container view changes its bounds, collection view also changes its bounds, which trigger its UICollectionViewLayout to re-layout as well.</p>
  
  <p>All is well except that cells do not re-use new frame and layout using old bounds.
  This is the log from important methods, where it's obvious that layoutSubviews is using wrong (old) frame.</p>
  
  <pre><code>__57-[RTColumnViewController processCalculatorKeypadVisible:]_block_invoke
  
  -[RTUnitLayout shouldInvalidateLayoutForBoundsChange:] : YES, {{0, 1014}, {272, 375}} -&gt; {{0, 1014}, {175, 375}}
  -[RTUnitLayout prepareLayout], bounds={{0, 1014}, {175, 375}}, itemsize={175, 89}
  -[RTUnitLayout prepareForAnimatedBoundsChange:] : {{0, 1014}, {272, 375}} -&gt; {{0, 1014}, {175, 375}}
  
  -[RTUnitLayout layoutAttributesForElementsInRect:] : rect={{0, 667}, {175, 1334}}
  __50-[RTUnitLayout layoutAttributesForElementsInRect:]_block_invoke_2 : &lt;NSIndexPath: 0xc000000000048016&gt; {length = 2, path = 0 - 9} frame={{0, 801}, {175, 89}}
  __50-[RTUnitLayout layoutAttributesForElementsInRect:]_block_invoke_2 : &lt;NSIndexPath: 0xc000000000058016&gt; {length = 2, path = 0 - 11} frame={{0, 979}, {175, 89}}
  ...
  
  -[RTUnitLayout finalLayoutAttributesForDisappearingItemAtIndexPath:] : &lt;NSIndexPath: 0xc000000000058016&gt; {length = 2, path = 0 - 11} frame={{0, 979}, {272, 89}}
  -[RTUnitLayout initialLayoutAttributesForAppearingItemAtIndexPath:] : &lt;NSIndexPath: 0xc000000000058016&gt; {length = 2, path = 0 - 11} frame={{0, 979}, {175, 89}}
  -[RTUnitCell layoutSubviews] : pre-super: {{0, 979}, {272, 89}}
  -[RTUnitCell layoutSubviews] : post-super: {{0, 979}, {272, 89}}
  ...
  
  -[RTUnitLayout finalizeAnimatedBoundsChange] : {{0, 1014}, {175, 375}}
  
  __57-[RTColumnViewController processCalculatorKeypadVisible:]_block_invoke623 : completed
  </code></pre>
  
  <p>After it's done, if I just lightly scroll the UICV, it will trigger re-display and all cells will be shown as they should be. I'm just stumped why this does not happen during the original animation, when it should.</p>
  
  <p>Any ideas..?</p>