swift2 UICollection水平滚动,以便减少单元格项之间的空间[关闭]

v7pvogib  于 2022-11-23  发布在  Swift
关注(0)|答案(4)|浏览(181)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
8个月前关闭。
Improve this question
我使用UICollectionView并设置水平滚动。现在在这一个图像视图中,除了单元格间距外,所有工作都很完美。在collectionView中,我将单元格的最小间距设置为0(零)。但空格仍然存在。
我的输出如下:

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

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

6tdlim6h

6tdlim6h1#

不要忘记设置集合视图流程布局委托:

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;
    }
5m1hhzi4

5m1hhzi42#

您可以从尺寸检查器中设定单元格和行间距。
您也可以从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

nmpmafwu

nmpmafwu3#

在代码中添加以下方法并进行操作,直到获得所需输出

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
    }
xmjla07d

xmjla07d4#

我的代码都是好的。但是我没有门输出我想要的,所以我尝试新的东西,给予-负值

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

所以只使用这一个方法与负值,我得到了我想要的输出。感谢所有谁试图解决这个错误为我...

相关问题