【问题标题】:Last horizontal collectionview cell is half displeyed最后一个水平collectionview单元格显示一半
【发布时间】:2016-02-14 01:48:12
【问题描述】:

我有水平 CollectionView,当我启动应用程序时,我画廊中的最后一张图片只显示了一半。如何解决?

【问题讨论】:

  • contentView 框架可能比 CollectionView 框架大。你能提供一些代码吗?
  • 我必须设置与屏幕宽度有关的单元格的大小。你需要什么代码,我有collectionView的标准代码。我不知道该怎么做。

标签: swift uiscrollview uicollectionviewcell uicollectionviewlayout


【解决方案1】:

我遇到过类似的问题,帮助我的是设置 minimumInteritemSpacingForSectionAt 和 minimumLineSpacingForSectionAt

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
}

【讨论】:

    【解决方案2】:

    最简单的解决方案是添加一些底部“插入”值。

    这样做

    1. 在您的 xcode 的“实用程序区域”中,单击“尺寸检查器”选项卡
    2. 然后参考下图

    【讨论】:

      【解决方案3】:

      contentView 框架可能比 CollectionView 框架大。

      假设您希望 collectionView 显示 5 个单元格...

      在 viewDidLoad 上:

      let cvWidth = collectionView.frame.width
      let cvHeight = collectionView.frame.height
      let cellEdge = cvWidth / 5
      let contentSize = cellEdge * CGFloat(numberOfCells)
      
      collectionView.contentSize = CGSize(width: contentSize, height: cvHeight)
      

      不要忘记设置您的 numberOfCells

      如果单元格之间有一些空间,则应该这样设置 cellEdge:

      let cellEdge = cvWidth / 5 + space
      

      编辑——关于 UICollectionViewDelegateFlowLayout:

      要设置单元格和部分之间的空间,首先将 UICollectionViewFlowLayoutDelegate 添加到 ViewController:

      class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
      

      您可以通过此函数设置间距、行距和插入:

      func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
          return UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
      }
      
      func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
          return 0
      }
      
      func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
          return 0
      }
      

      【讨论】:

      • 如何设置space和numberOfCells?
      • 你有一组图像对吗?您可以设置 numberOfCells = arrayOfImage.count @JoeDominguez
      • 您可以在此处阅读有关单元格间距和 UICollectionViewFlowLayout 的信息:stackoverflow.com/questions/28325277/…@JoeDominguez
      • 以及如何设置空间?
      • 仍然不知道如何设置空间,我尝试了让布局: UICollectionViewFlowLayout = UICollectionViewFlowLayout() layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0) layout.itemSize = CGSize(width: screenWidth/3, height: screenWidth/3) layout.minimumInteritemSpacing = 0 layout.minimumLineSpacing = 0
      猜你喜欢
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多