全屏 UICollectionView:如何在滚动时在全屏单元格(或部分)之间添加间距

Posted

技术标签:

【中文标题】全屏 UICollectionView:如何在滚动时在全屏单元格(或部分)之间添加间距【英文标题】:Fullscreen UICollectionView: how to add spacing between Fullscreen cells (or sections) while scrolling 【发布时间】:2014-08-17 13:27:07 【问题描述】:

如何使用UICollectionView 构建分页图片库,滚动时项目之间有间距,但项目应该是全屏的?

如果我设置了

flowLayout.minimumInteritemSpacing = 10.0
flowLayout.minimumLineSpacing = 10.0

这个间距将永远存在,分页将被打破

【问题讨论】:

【参考方案1】:

添加项目间或行间间距,就像您在帖子中所做的那样。然后让集合视图以与间距相同的量伸出屏幕边界。因此,如果您在项目之间添加 10 pt,那么集合视图应该在每边突出 5 pt(我认为;我可能会偏离 2 倍)。

【讨论】:

【参考方案2】:

这就是我在 ios 9 Swift 中必须做的事情:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
    //UIScreen.mainScreen().bounds.width
    return CGSizeMake(self.collectionView.bounds.size.width - 6, self.collectionView.bounds.size.height)



func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat 
    return 6


func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets 
    return UIEdgeInsetsMake(0, 3, 0, 3)


func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat 
    return 6

因此,如上面的代码所示,每个 UICollectionViewCell 在滚动时彼此之间有 6px

【讨论】:

【参考方案3】:

对于 viewDidLoad 中的行距 10 设置 collectionView.frame = CGRect(x: -5, y: 0, width: UIScreen.main.bounds.width + 10, height: UIScreen.main.bounds.height) 然后在UICollectionViewDelegateFlowLayout:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 

    return view.bounds.size


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat 
    return 10


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat 

    return 10


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 

    return UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)

它对我有用。希望它可以帮助某人

【讨论】:

以上是关于全屏 UICollectionView:如何在滚动时在全屏单元格(或部分)之间添加间距的主要内容,如果未能解决你的问题,请参考以下文章

带有全屏 UICollectionView 的 iOS 7 InteractivePopGesture

在 UICollectionView 中选择时将单元格扩展到全屏

带有分页的全屏 UICollectionView 内的 UIWebView

UICollectionView 初始化后不滚动

具有单元格间距的 UICollectionView 存在滚动问题

UICollectionView 神秘地延迟触摸直到滚动