iOS:使用约束动画 UICollectionView 垂直扩展?

Posted

技术标签:

【中文标题】iOS:使用约束动画 UICollectionView 垂直扩展?【英文标题】:iOS: animate UICollectionView vertical expansion with constraints? 【发布时间】:2014-11-06 15:40:09 【问题描述】:

我有一个视图控制器,顶部有一个 UICollectionView(使用默认网格布局),下面是其他控件。当我在集合视图中添加/删除单元格时,我希望它在垂直方向上展开/收缩(因此它有足够的行来显示所有单元格,而不是更多),并且它下面的所有控件都向下移动/相应地向上屏幕。如果您想象添加/删除地址时电子邮件应用程序 UI 是如何工作的,那么这就是我试图实现的效果。但是,使用约束来实现这种效果让我望而却步。任何帮助将不胜感激!

【问题讨论】:

我有视图控制器代码,包括处理集合视图单元格添加/删除的代码,但我怀疑这会有所帮助。我刚刚在 IB 中布置了控件并选择了“添加所有缺失的约束”。当我在集合视图中添加/删除单元格时,我希望它调整大小以适应其内容并让其他控件自动向上/向下移动,但是到目前为止我阅读的所有关于约束的文档都涉及定位而不是而不是调整大小。 【参考方案1】:

我做了什么:

    删除了 IB 中的所有约束 在集合视图上添加了高度约束并将其连接到 IBOutlet 让 IB 添加缺少的约束 为集合视图的 contentSize 属性添加一个观察者

现在,当我将一个单元格添加到集合视图并告诉它重新加载时,我会在 contentSize 更改时收到通知,并且可以将高度约束的常量设置为 contentSize 高度。结果:调整大小以填充其内容的集合视图,其他控件根据需要向上/向下移动:-)

【讨论】:

以上是关于iOS:使用约束动画 UICollectionView 垂直扩展?的主要内容,如果未能解决你的问题,请参考以下文章

IOS 8 高度约束动画未按预期工作

带约束的 UIImageView 的 iOS 动画

iOS9.0中的动画锚样式约束

关于 iOS 约束更新动画 - 动画块 + layoutIfNeeded

iOS开发--动画篇之layout动画深入

iOS - 约束在 viewdidload 中以意想不到的方式动画?