gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:27:46 26 4
gpt4 key购买 nike

当用户执行某些操作时,我需要将 UICollectionView 从底部拉到一定高度。由于该新状态完全是可选的,因此 Collection View 是在以这种方式呈现之前创建的。通过更改 NSLayoutConstraint 的 constant 属性和在某个动画 block 中调用 [view layoutIfNeeded] 来执行从下到上的动画。

问题是,这样做会使单元格以不希望的方式出现:它们从左上角扩展到指定大小。我希望 Collection View 出现,并且它的所有单元格都已经按照最终大小和外观进行了布局。

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

我猜问题是由于 Collection View 单元格被添加到 View 层次结构中,恰好在包含调用 [superview layoutIfNeeded] 的动画 block 之前。这可能导致 UIKit 认为它还应该为布局的那些更改设置动画。如果是这种情况,解决方案可能是从动画中排除对 View 层次结构的特定更改。

最佳答案

从左上角展开通常是在原始 View 从未布局时在动画 block 中调用 layoutIfNeeded 的症状。您基本上是在为初始布局 channel 设置动画,其中所有 subview 都从 CGRectZero 开始。

要解决它,您需要做两件事:

  • 确保您正在编辑的约束与 Collection View 的位置相关,而不是大小。我的意思是您不是通过将其高度从零更改为最终值来呈现您的 Collection View 。
  • 在编辑约束之前在 View 上调用 layoutIfNeeded,然后在做出更改后在动画 block 中再次调用它。通过这种方式,您只为对约束指定的更改进行动画处理,而不是对整个布局进行动画处理。

关于ios - 呈现 UICollectionView 时防止 UICollectionViewCell 动画外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17283605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com