Force layoutSubviews when calling -(void)reloadData

I have noticed that if I call:

<pre>[self.collectionView reloadData];
[self.collectionView scrollRectToVisible:CGRectInfinite animated:NO];</pre>

the view does not scroll to the end of the bounds. However, if 'layoutSubviews' is called instead of 'setNeedsLayout' when reloading data, the above code works.