首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现iOS 9的UICollectionView交互式运动功能?

如何实现iOS 9的UICollectionView交互式运动功能?
EN

Stack Overflow用户
提问于 2016-10-21 04:17:55
回答 1查看 527关注 0票数 1

iOS 9增加了点击和保持重新排列集合视图单元格的能力。在微不足道的情况下启用此功能非常简单。只需在UICollectionViewController上实现一个函数。

func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)

如果您想要更多关于该函数的文档,请参阅UICollectionViewDataSource中的定义。

不过,这并不仅仅适用于自定义布局。在更复杂的情况下,怎样才能使它发挥作用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-21 04:17:55

它没有很好的文档,但有两个强制重写,这是正确的工作。在您的UICollectionViewLayout子类中实现以下两个函数

代码语言:javascript
复制
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
    return self.itemAttributes.filter { $0.frame.intersects(rect) }
}

首先,您需要确保对布局中的项属性进行筛选,使其只包含给定的rect中的属性。如果你包括更多,它就会混乱。

代码语言:javascript
复制
override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
    return self.itemAttributes.first(where: { $0.indexPath.item == indexPath.item })
}

不知道为什么这是必要的,您可能认为UIKit可以根据以前的调用推断出正确的属性,但它不能,无论如何,您只需要能够为给定的indexPath获取正确的属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40168345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档