我希望section
中一个UICollectionView
的项目保持不变,而UICollectionView
内的其他项目正在滚动。
我尝试通过设置Autolayout
constraint
将项目固定到superview
的{{1}}来实现此目的。但是,这似乎不起作用,因为UICollectionView
抱怨constraints
和UICollectionViewCell
UICollectionView's
没有共同的祖先。
还有其他方法可以实现吗?
答案 0 :(得分:0)
感谢Ad-J的评论,我能够实施解决方案。
我需要覆盖UICollectionViewFlowLayout
并实施以下方法:
override func prepareLayout() {
super.prepareLayout()
//fill layoutInfo of type [NSIndexPath:UICollectionViewLayoutAttributes]
//with layoutAttributes you need in your layout
if let cv = self.collectionView {
for (indexPath, tileToFloat) in layoutInfo {
if indexPath.section == 0 {
var origin = tileToFloat.frame.origin
origin.y += cv.contentOffset.y + cv.contentInset.top
tileToFloat.frame = CGRect(origin: origin, size: tileToFloat.size)
}
tileToFloat.zIndex = 1
}
}
}
override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool {
return true
}
这将使第一部分中的所有项目都静止。