在布局之间制作动画时,自动布局不会调整 Uicollectionviewcell 项目的大小

Posted

技术标签:

【中文标题】在布局之间制作动画时,自动布局不会调整 Uicollectionviewcell 项目的大小【英文标题】:Autolayout is not resizing Uicollectionviewcell items when animating between layouts 【发布时间】:2013-12-30 10:18:18 【问题描述】:

我有一个 uicollectionview 单元格,里面有一个图像视图,当我切换到更大的“放大”布局时,我想调整它的大小。

我在单元格内放置了约束,当显示放大的布局时,它会调整图像视图的大小。我正在使用 uicollectionview setLayout 动画方法。

问题是图像不随动画缩放,只有集合视图单元格可以。

图像似乎只是跳到它的最终尺寸,没有插值。所以动画看起来非常不稳定。

似乎我需要以某种方式控制自动布局约束,以便它们使用设置布局动画方法进行动画,但我不知道如何。

是否有适当的方法来缩放单元格及其内容?

非常感谢!

【问题讨论】:

【参考方案1】:

我在使用自动布局时遇到了(有)同样的问题!

目前我发现处理它的最简单方法是设置:

imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

这会导致 imageView 大小转换的动画流畅,并且是我发现的唯一与 setCollectionViewLayout:animated 一致的工作:

【讨论】:

【参考方案2】:

您可能会发现 this answer 和我为解决类似问题而编写的链接 GitHub 演示应用程序很有帮助。

【讨论】:

以上是关于在布局之间制作动画时,自动布局不会调整 Uicollectionviewcell 项目的大小的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局时使用 UIDynamicAnimator 制作动画

通过切换布局触发的动画 UICollectionView 单元格调整大小

使用自动布局时如何将动画从一个 UIView 翻转到另一个?

使用自动布局时标签不会调整大小,情节提要中的约束

如何使用自动布局调整视图大小以适合标签子视图?

Interface Builder 自动布局和调整大小