【发布时间】:2014-08-21 20:57:52
【问题描述】:
您好,我正在尝试使用 UICollection 视图并让它们具有多个布局。
当我使用 swift/obj-cs setCollectionViewLayout(toLayout, animated: true);动画确实会重新排列单元格,但单元格中的项目会跳转到最终大小,而不是随着单元格逐渐增长,最终结果是看起来很糟糕的动画。
这是我正在切换的两种布局:
{
override init()
{
super.init()
minimumLineSpacing = 20.0;
minimumInteritemSpacing = 0.0;
itemSize = CGSizeMake(80.0, 80.0)
sectionInset = UIEdgeInsetsMake(20.0, 60.0, 20.0, 60.0)
}
required init(coder: NSCoder) {
fatalError("NSCoding not supported")
}
还有一个:
{
override init()
{
super.init()
minimumLineSpacing = 10.0;
minimumInteritemSpacing = 10.0;
itemSize = CGSizeMake(150.0, 150.0)
sectionInset = UIEdgeInsetsMake(20.0, 20.0, 20.0, 20.0)
}
required init(coder: NSCoder) {
fatalError("NSCoding not supported")
}
以及用于更改布局的代码:
func changeLayoutWithLayout(toLayout:UICollectionViewFlowLayout)
{
self.setCollectionViewLayout(toLayout, animated: true);
}
有没有办法让 itemSize 正确设置动画?或者为过渡创建我自己的自定义动画?我尝试使用 batchupdates 方法,但是这给了我相同的结果,即 itemsize 跳转到其最终值。
【问题讨论】:
-
嗨,你有没有想过这个问题?我遇到了完全相同的问题
-
@MichaelForrest 遗憾的是,我从未找到解决问题的方法。我尝试了几种手动动画方法,但我尝试的所有方法要么性能不佳,要么看起来不对。实际上我只是一起放弃了 UIKit,现在我 90% 的工作都是在 SpriteKit 中完成的。
标签: ios objective-c swift uicollectionview uicollectionviewlayout