Tag: Peek

如何创建像iOS 11 App Store这样的侧面偷看的单元格

集合视图的滚动和分页一直是我的一个谜。 直到最近,我们才有一个项目的需求,在该项目中,有一个集合视图显示了上一个和下一个项目的一部分。 因此,现在该深入研究实现此功能了。 我最终决定实现自己的逻辑并从中创建一个pod,以便可以轻松地将其集成到项目中。 该功能在此处可用: MaherKSantina / MSPeekCollectionViewDelegateImplementation MSPeekCollectionViewDelegateImplementation –一种自定义的分页行为,可在页面中窥视上一个和下一个项目 github.com 自述文件包含使之正常运行所需的所有必要信息。 为了方便起见,下面是一个示例: 如果您有兴趣了解MSPeekCollectionViewDelegateImplementation的内部工作原理,请继续下一节。 本节将介绍偷看委托实现的主要功能。 (此处未显示所有代码,但Github存储库中包含所有代码) 我们将不依赖集合视图中已经存在的分页行为,而是将实现自己的逻辑。 因此,“ Paging Enabled复选框将被取消选中。 布局: 这是一个显示视图的不同组件的图: 您可以使用委托函数为像元间距设置任何值: 我们可以使用委托函数来做到这一点: 在索引路径处插入段 由于单元格将占据剩余空间,因此我们可以设置单元格的项目大小,如下面的委托函数所示: 索引路径中项目的大小 由于有两个从侧面窥视的单元格,因此从左右两个单元格之间有两个空格,可以使用以下公式计算itemWidth: 让itemWidth = collectionView.frame.size.width-2 *(cellSpacing + cellPeekWidth) 如果集合视图的宽度小于peek +间距,则max函数仅用于防止出现负值。 为了安全起见,我们还将最小项目间距设置为0: 最小项目间距 逻辑: 我们将引入一个名为scrollThreshold的新参数。 这将确定需要多少滚动才能捕捉到相邻的单元格。 当用户开始使用以下命令拖动时,我们将通过保存滚动偏移量来计算滚动距离: 滚动视图将开始拖动 这是主要部分。 我们可以使用委托函数scrollViewWillEndDragging来实现逻辑。 滚动视图将结束拖动 让我们将其分为几个步骤: 我们从targetContentOffset指针获取滚动视图将停止拖动的目的地。 指针指向滚动视图将停止的位置。 更改此值将更改滚动视图停止的位置,并且它将自动为其设置动画,而无需进行任何额外的工作。 计算滚动的总距离。 检查滚动的幅度是否大于scrollThreshold并创建一个系数,该系数具有3个值(-1、0、1)之一。 这将被添加到当前索引中。 通过将偏移量除以项目宽度来获取当前索引 将在步骤3中检索到的系数添加到当前索引。 […]