gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:06:33 26 4
gpt4 key购买 nike

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

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

我知道 UIView 的 setAnimationEnabled: 方法之类的东西,但我似乎找不到应该如何以及在哪里使用它(如果这是可行的方法)。

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

最佳答案

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

要解决这个问题,你需要两件事:

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

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

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