UICollection水平滚动,因此减少了单元格项之间的空间

时间:2017-07-29 07:26:46

标签: ios swift uicollectionview swift2 uicollectionviewcell

我使用UICollectionView并设置水平滚动。现在在这一个图像视图中,所有工作完美除了单元格间距。在collectionView中,我为单元格0(零)设置最小间距。但是Spaces仍然存在。

我的输出就是这样.. enter image description here

但我需要这种类型的输出..

enter image description here

还有一件事是我提到了很多答案,但仍然不知道该怎么做。我使用Xcode 7.0所以我需要在swift 2.0中使用解决方案,如果可能的话,还请求在swift 3.0中给出答案。 请帮我。谢谢你提前。

4 个答案:

答案 0 :(得分:3)

试试这个

别忘了设置collectionview flowlayout delegate

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
            return CGSize(width: collectionViewTable.bounds.size.width/2 - 20, height: 160)

         }

func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        insetForSectionAt section: Int) -> UIEdgeInsets
    {
        return  UIEdgeInsetsMake( 5,  14, 5,  14)
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 20;
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 20;
    }

答案 1 :(得分:1)

enter image description here

您可以从尺寸检查器设置单元格和线条间距。

您也可以从UICollectionViewDelegateFlowLayout进行设置。

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

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

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

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

答案 2 :(得分:0)

在代码中添加以下方法并进行操作直到您希望输出。

func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: CGFloat(collectionView.frame.size.width/ 2 - 5), height: CGFloat(135)) // 2 is indicates number of cell in row
    }

    func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        insetForSectionAt section: Int) -> UIEdgeInsets{
        return UIEdgeInsetsMake(0, 0, 0, 0)
    }

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

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

答案 3 :(得分:0)

我的代码很好。但是我没有把我想要的东西拿出去,所以我尝试了新的东西 - 减去价值

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
        return -20;
    }

所以只使用这个带负值的方法,我得到了我想要的输出。 感谢所有试图为我解决这个问题的人......