UICollectionViewController推送转换

时间:2015-05-07 17:19:27

标签: ios uicollectionview push uicollectionviewlayout

我试图实现一个界面,用户通过连续的数据集合视图向下钻取,并且希望每个集合视图在推送时对下一个集合视图进行动画处理。这非常令人沮丧。

我把它归结为一个非常简单的测试用例,我仍然无法以我认为应该的方式开始工作。

1- UINavigationController有一个UICollectionViewController,它硬连线返回numberOfSections == 1,itemsInSection = 8,并且cellofItemAtIndexPath中的cellsColor设置为redColor。关联的UICollectionViewFlowLayout.itemSize设置为80,80。

2 - 当选择一个单元格时,我推送一个新的UICollectionViewController,它是硬连线的,返回numberOfSections == 1,itemsInSection == 30,单元格的backgroundColor在cellForItemAtIndexPath中设置为blueColor。关联的UICollectionViewFlowLayout.itemSize设置为60,60。

如果我将第二个控制器的useLayoutToLayoutNavigationTransitions属性设置为false,则控制器将使用正确的数据显示(30个蓝色单元格)滑入。如果我在推送之前将useLayoutToLayoutNavigationTransitions设置为true,则只有布局在推送时更改。第一个控制器的8个红色单元仍然显示,但它们的大小变为60,60。

Apple的UICollectionViewController类引用说,当你将useLayoutToLayoutNavigationTransitions设置为true时,导航控制器会在两个集合视图控制器的内容之间执行动画布局更改,而不是传统的推动动画" ,但我只是改变布局。

我的测试代码很简单,所以不确定我在这里做错了什么。 Apple的课堂参考是否歪曲了预期的行为应该是什么?当你推动一个新的控制器(理论上是一个新的数据源)时,有没有理由改变布局?有没有其他方法可以动画到下一个集合视图?

对于它的价值,这里是我的测试程序中唯一的代码,除了返回numberOfSections和numberOfItems的适当值,并设置适当的单元格背景颜色。

override func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {

    let itemSize = (collectionViewLayout as! UICollectionViewFlowLayout).itemSize;
    let theLayout = UICollectionViewFlowLayout()
    theLayout.itemSize = CGSizeMake(itemSize.width - 20, itemSize.height - 20)

    let toVC = SecondCollectionViewController(collectionViewLayout:theLayout)
    toVC.useLayoutToLayoutNavigationTransitions = true
    navigationController?.pushViewController(toVC, animated:true)
}

0 个答案:

没有答案