作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想我的问题有点简单,但不知道如何实现。
我想要一个水平的 UICollectionView
,我可以在其中看到我的上一个和下一个单元格。
我已经设置了一个水平的、启用分页的 collectionView
及其流布局。
我“只是”想念这件事。
这是我想要的样机。
我的问题是:我无法获得这个位置:当前单元格居中,上一个和下一个出现。我尝试使用布局的 - minimumInteritemSpacing
和 - sectionInset
属性但没有成功。
最佳答案
这是以下布局的代码:
import UIKit
/**
A UICollectionViewFlowLayout subclass that snaps to the nearest cell as soon as the user stops dragging.
Respects the scrolling velocity.
Only _Horizontal_ direction is supported.
*/
class SnapCenterLayout: UICollectionViewFlowLayout {
override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
guard let collectionView = collectionView else { return super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity) }
let parent = super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity)
let itemSpace = itemSize.width + minimumInteritemSpacing
var currentItemIdx = round(collectionView.contentOffset.x / itemSpace)
// Skip to the next cell, if there is residual scrolling velocity left.
// This helps to prevent glitches
let vX = velocity.x
if vX > 0 {
currentItemIdx += 1
} else if vX < 0 {
currentItemIdx -= 1
}
let nearestPageOffset = currentItemIdx * itemSpace
return CGPoint(x: nearestPageOffset,
y: parent.y)
}
}
关于ios - CollectionView 取笑上一个和下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048217/
我是一名优秀的程序员,十分优秀!