在UICollectionView上animation自动布局约束更改

继上一个问我问,我试图animationUICollectionView (这是在例子中的UICollectionView高度变化。 通过使用以下代码修改集合视图上的自动布局约束来触发高度更改:

 - (IBAction)expandYellowBox:(id)sender { [UIView animateWithDuration:0.5 animations:^{ self.yellowBoxHeightConstraint.constant += 50; [self.view layoutIfNeeded]; }]; } 

但是,当我调用[self.view layoutIfNeeded]这会导致集合视图被重新加载,所以它闪烁显示给用户。 不过,我不希望收集视图重新加载,而只是为了animation的高度变化。 有没有办法避免-layoutIfNeeded重新加载集合视图,或者另一种方法来animation约束高度变化,这不会调用具有重新加载集合视图的副作用的方法?

如果有人遇到这个问题,那是因为我实际上在animation块上面调用了[self.collectionView reloadData] (并没有注意到!)。 看起来,调用-reloadData-layoutIfNeeded会导致集合视图闪烁。 删除对-reloadData的调用可以解决问题。