ios – 在呈现UICollectionView时防止UICollectionViewCell动画外观

前端之家收集整理的这篇文章主要介绍了ios – 在呈现UICollectionView时防止UICollectionViewCell动画外观前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用户执行某些操作时,我需要将UICollectionView从底部拉到一定高度.由于新状态完全是可选的,因此集合视图就在以这种方式呈现之前创建.从底部到顶部的动画是使用对NSLayoutConstraint的常量属性的更改以及在某些动画块中调用[view layoutIfNeeded]来执行的.

问题在于,以这种方式做事会使单元格以不希望的方式出现:它们从左上角扩展到指定的大小.我希望集合视图能够出现,并且所有单元格都已经按照它们的最终尺寸和外观进行了布局.

我知道像UIView的setAnimationEnabled:方法之类的东西,但我似乎无法找到我应该如何以及在哪里使用它(如果这是要走的路).

我想这个问题是由于集合视图单元格被添加到视图层次结构中,就在包含对[superview layoutIfNeeded]的调用的动画块之前.这可能导致UIKit认为它也应该对布局的这些更改进行动画处理.如果是这种情况,那么解决方案可能就是从动画中排除,视图层次结构的特定更改.

解决方法

从左上角扩展通常是在原始视图从未布局时在动画块中调用layoutIfNeeded的症状.您基本上是为初始布局传递设置动画,其中所有子视图都是从CGRectZero开始的.

解决它,你需要两件事:

>确保您编辑的约束与集合视图的位置有关,而不是与大小相关.我的意思是,你不是通过将其高度从零改为最终值来呈现你的集合视图.>在编辑约束之前在视图上调用layoutIfNeeded,然后在进行更改后再在动画块中再次调用它.这样,您只需将您指定的更改设置为约束,而不是整个布局.

猜你在找的iOS相关文章