InvalidateLayoutForBoundsChange应该以与invalidateLayout相同的方式工作吗?

tes*_*ing 5 ios uicollectionview uicollectionviewlayout

一个人可以invalidateLayout直接调用一个UICollectionView或一个可以实现shouldInvalidateLayoutForBoundsChange:并返回YES

现在,我发现在我的实现中,两者的工作方式有所不同。invalidateLayout在我的情况下可以正常工作,但是shouldInvalidateLayoutForBoundsChange:行为有所不同,因此布局看起来被破坏了。详细地说,在方向更改时,单元的宽度不会更新,因此minimumLineSpacingminimumInteritemSpacing并不相同,这不适用于我的布局。特别是,由于未更新宽度,连续的项目数是错误的。

如果我查看文档,invalidateLayoutWithContext:shouldInvalidateLayoutForBoundsChange:返回时称为YES。但是,此方法与直接调用invalidateLayout有何不同?