在滚动UICollectionView时动画化NSLayoutConstraint

时间:2016-10-31 02:12:32

标签: ios swift uicollectionview

我的UICollection上方有两个标签,我需要在集合视图中滚动时设置动画。基本上给用户一种感觉,即屏幕是一个大滚动视图。

我的视图在界面构建器中显示如下:

enter image description here

我已经提出以下代码,以便在较小的屏幕上看起来更好,但它没有给我我想要的效果:

g

此代码的问题在于屏幕现在跳了起来。周围而不是动画,就好像它是集合视图的一部分。

此代码的另一个问题是它跳了起来'一旦你开始向另一个方向滚动,就会回来。无论你是在UIScrollView的顶部还是底部。将TopConstraint设置为50应该只有在您处于最顶层时才会感到高兴。

1 个答案:

答案 0 :(得分:1)

以下是如何将前两个单元格设置为集合视图的宽度:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

let insets = collectionView.contentInset
let collectionViewWidth = collectionView.frame.width - (insets.left + insets.right + 1)
let collectionViewHeight = collectionView.frame.height - (insets.top + insets.bottom)

  switch indexPath.row {
    case 0, 1:

    return CGSize(width: collectionViewWidth, height: collectionViewHeight / 8)

      default:
     return CGSize(width: collectionViewWidth / 3, height: collectionViewHeight / 8)
    }
}

您可以更改高度除以获得所需比率的程度。与默认值相同。所以说你希望前2个后的所有单元格每行3个,你可以将collectionViewWidth / 3

分开

然后,您可以创建一个不同的集合视图单元子类来生成前两个单元格,在cellForItemAtIndexPath中,您将检查它是什么,并相应地设置您的单元格。