itemSize没有用setCollectionViewLayout制作动画(toLayout,animated:true);

时间:2014-08-21 20:57:53

标签: ios objective-c swift uicollectionview uicollectionviewlayout

您好我尝试使用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跳转到它的最终值。

2 个答案:

答案 0 :(得分:1)

我发现UIColletionViewCellUIColletionViewCell.contentViewsetCollectionViewLayout(toLayout, animated: true)调用的动画期间有不同的行为,当contentView跳转到最终大小时,单元格的大小逐渐增大。 但是Apple建议内容视图是您应该添加单元格自定义内容的主视图。

答案 1 :(得分:0)

当您调用func changeLayoutWithLayout函数时,您可以尝试再次初始化layou。