[英]Swift swipe-able views
我是Swift和iOS开发的新手,我希望设置一系列可以左右滑动的视图或“卡片”,下一张/上一张卡片留在边缘,表示它们在那里。 这是在iOS App Store预览中完成的:
到目前为止,我真正发现的是这篇中篇文章: iOS Swift:Swipe View 。 但是我不确定这是否是我上面要求的正确方法,而且我也不知道如何让下一张/上一张卡片保持在每次滑动的边缘。
有没有人有任何实现这个的提示?
最简单的方法是使用UICollectionView
和UICollectionViewFlowLayout
。 UICollectionViewFlowLayout
是开箱即用的,功能非常强大。
基本上你需要:
UICollectionView
添加到视图控制器。 UICollectionView
选择Flow
布局。 UICollectionViewFlowLayout
上面的步骤应该足以具有垂直可滚动的卡片视图。 但它看起来不会很棒! 为了使它变得更好,您可能需要在用户结束滚动后完美地居中最合适的卡片。 要实现粘性滚动,您需要使用以下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) {
...
}
备注:
处理我列出的滚动视图的方法由UICollectionViewDelegate
从UIScrollViewDelegate
继承。 UICollectionView
本身派生自UIScrollViewDelegate
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.