我想为我的CollectionView设置自定义水平滚动,它将滚动1个单元格(而不是我的屏幕的整个宽度)。
我可以设置HORIZONTAL滚动,但不能自定义。 (见屏幕)。 1个屏幕:我对我的collectionView for UIScrollViewDelegate的扩展。 *我看到了,在控制台中(也见过)" x" - 我的偏移= 290 - 这是真的!但实际上它不是290.分页标记为" true" 2屏幕:delegate和dataSource。
请帮助!
答案 0 :(得分:0)
首先,您需要将collectionView滚动方向设置为水平(UICollectionViewScrollDirectionHorizontal
)并将pagingEnabled
设置为 YES
这意味着您的集合视图将逐个单元格水平滚动。
设置水平方向(从XIB或故事板中选择集合视图)
用于设置分页启用
myCollectionView.pagingEnabled = true
已更新:
您应该使用UICollectionViewDelegateFlowLayout
代理
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
let width = UIScreen.main.bounds.size.width
var height = 101.7 // set height as you want
return CGSize(width: width, height: height)
}
答案 1 :(得分:0)
您可以创建一个自定义UICollectionViewFlowLayout,它将屏幕中的单元格居中,然后一次一页。 Karmadust写了一篇很好的博客文章,我过去成功地使用过它来做同样的事情
http://blog.karmadust.com/centered-paging-with-preview-cells-on-uicollectionview/
答案 2 :(得分:0)
如果使用storyBoard,请转到集合视图并选择右手标签"显示尺寸检查器"并改变
minimum spacing for cells = 0
minimum spacing for lines = 0
如果你想直接从代码更改然后实现这些UICollectionViewDelegateFlowLayout方法
func collectionView(_ collectionView: UICollectionView, layout
collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
必须记住滚动方向设置为水平 和分页启用
并将此委托方法实现为代码
extension ViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout
collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath:
IndexPath) -> CGSize {
return CGSize(width: collectionView.frame.size.width, height:
collectionView.frame.size.height)
}
}