迅速轻扫的意见

我是Swift和iOS开发人员的新手,并且正在设置一系列可以左右移动的视图或“卡片”,下一张/上一张卡片保留在边缘,以表示它们在那里。 这是在iOS App Store预览中完成的:

应用商店预览

到目前为止,我真正发现的是这个中等文章: iOS Swift:Swipe View 。 不过,我不确定这是否是正确的方法来做我上面要求的,我也不知道如何让下一张/上一张牌保持在每次刷卡的边缘。

有没有人有任何提示,以实现这一目标?

最简单的方法是使用UICollectionViewUICollectionViewFlowLayoutUICollectionViewFlowLayout开箱即用,非常强大。

基本上你需要:

  1. UICollectionView添加到您的视图控制器。
  2. 默认情况下, UICollectionView随着Flow布局的select。
  3. configurationUICollectionViewFlowLayout
    • 将滚动方向设置为水平
    • 定义项目大小和间距。 请记住,你只需要一个项目是完全可见的; 另外左右的空格也应该可见; 进一步你需要显示前一张和下一张卡片,所以一些基本的math等着你:)。 一个小窍门,让你第一个和最后一个卡正确居中:你应该指定垂直部分插图等于先前卡的可见宽度加卡之间的空间的总和。

上面的步骤应该足以具有可垂直滚动的卡片视图。 但它看起来不会很好! 要做到这一点,您可能需要完美地在用户结束滚动之后居中最合适的卡片。 要实现粘性滚动,您需要使用以下UICollectionViewDelegate方法:

 // compute collection view content offset in method bellow override func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) { ... } // compute targetContentOffset in method bellow override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { ... } 

…最后提示:使视图控制器的代码中的收集视图减速看起来很快做:

 self.collectionView?.decelerationRate = UIScrollViewDecelerationRateFast 

分页指示器:

在您提供的示例中,有一个分页控件可反映当前项目和总体项目数量。 您需要手动添加UIPageControll ; 你可以在故事板上做。 更新页面控制状态的最佳位置是:

 // method in UICollectionView delegate that you need to define. // update your paging info in method bellow. override func scrollViewDidScroll(scrollView: UIScrollView) { ... } 

备注:

处理我列出的滚动视图的方法由UIScrollViewDelegateUICollectionViewDelegateinheritance。 UICollectionView本身从UIScrollViewDelegate派生。