Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UICollectionView中更改单元格之间的空间?_Ios_Swift_Uicollectionview_Uicollectionviewcell - Fatal编程技术网

Ios 如何在UICollectionView中更改单元格之间的空间?

Ios 如何在UICollectionView中更改单元格之间的空间?,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,我想减小行中单元格之间的大小。 现在看来: 我正在尝试这样做,以减少它们之间的大小: let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2) layout.minimumInteritemSpacing = 0 layout.minimumLineSpacing

我想减小行中单元格之间的大小。 现在看来:

我正在尝试这样做,以减少它们之间的大小:

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0

但这对我没有帮助。我做错了什么?

进入故事板,右键单击“收藏视图”并

//Objective c
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
        return CGSizeMake((collectionView.frame.size.width/3)-20, 100);
    }

// Swift 2.0

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSizeMake((collectionView.frame.size.width / 3) - 20, 100)
}

// Swift 3.0
override func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: CGFloat((collectionView.frame.size.width / 3) - 20), height: CGFloat(100))
}

检查单元格之间的最小间距并将其减小为零。

如果在
情节提要
Xib
中创建
CollectionView
,请转到
情节提要
Xib
并从


在代码中,您必须为集合视图创建一个IBOutlet,然后按如下方式分配集合视图布局:

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 2, bottom: 10, right: 2)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
layout.scrollDirection = .horizontal
collectionView!.collectionViewLayout = layout
很简单

let layout = contactsCollectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout?.minimumLineSpacing = 8
Swift 5程序化 您可以在
lazy collectionView
块中提供更多的自定义功能。

(Swift 4)

  • 单击故事板中的集合视图
  • 在右侧,单击“尺寸检查器”
  • 管理并更改单元格大小值,您将自己计算出来

@patchdiaz这不是复制品!我试过这个版本,但不起作用。这就是我为什么提出这个问题的原因你是对的!删除;)你想让你的单元格左对齐吗,也就是说,你的右边会有很多空白?这一个呢?@TimVermeulen是的,没错!我希望一行有3个项目,右边有2像素的空间,除了最后一个one@ZacharyGover你能用可信的来源来支持这个“声明”吗?苹果的大部分模块仍然是用Objective-C编写的,现在仍然被广泛使用。你知道我说的几乎要过时了吗?是的,有些东西仍然是围绕Objective-C编写的,尽管苹果正在更新Swift,他们正在重写所有东西。尽管这仍然意味着大多数开发人员都在使用Swift编写。我想表达的主要观点是给出两个答案,正如你们现在所做的。因为很快它就会过时,如果未来的人不熟悉编程,当他们看到这篇文章寻求帮助时,他们将无法理解它。你能给出一些如何实现这一点的示例代码吗?\n不,我不是从XIB设置的。在XIB上,我刚刚设置了集合视图单元格现在问题可以在UIcollectionview单元格中。。。。。查看UICollectionview单元格中的约束。。。。。。不应该有任何填充,其余我需要检查你的代码在故事板有两个部分,一个是collectionview,在collectionview下有collectionview流布局…你检查了两者的最小间距了吗?你是我的英雄。还有一点需要补充:确保collectionview滚动方向为“水平”用于固定水平电池间隙。否则,最小材料间距可能不起作用。(在Xcode 11.2.1 swift 4.2中测试)
extension ViewController: UICollectionViewDelegateFlowLayout {
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            let collectionWidth = collectionView.bounds.width
            return CGSize(width: collectionWidth, height: collectionWidth/2)
        }
        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 100
        }
    }
lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        layout.scrollDirection = .horizontal

        //Provide Width and Height According to your need
        let width = UIScreen.main.bounds.width / 4
        let height = UIScreen.main.bounds.height / 10
        layout.itemSize = CGSize(width: width, height: height)

        //Make Space as Zero
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0

        return UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    }()