Swift UIEdgeInsets 无法正常工作,如何在单元格之间添加间距?

Posted

技术标签:

【中文标题】Swift UIEdgeInsets 无法正常工作,如何在单元格之间添加间距?【英文标题】:Swift UIEdgeInsets not working properly, how to add spacing between cells? 【发布时间】:2021-06-02 10:29:05 【问题描述】:

我想在多个自定义单元格之间添加间距。我有多个包含单元格的部分。

我有一个 UITableView 的 ViewController 类,我在其中指定信息:

struct customCell 
        let title: String
 

 func configure() 
            models.append(Section(title: "", options: [
             customCell(title: "Sounds")
            ,

我有一个不同的 UITableViewCell 类,我使用 layoutSubViews() 方法:

override func layoutSubviews() 
        super.layoutSubviews()
      
        contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0))

我在这个网站上看到了其他解决方案,他们通过使用 UIEdgeInsets 获得间距。

我尝试使用 layoutSubViews() 方法,但没有成功,它将单元格的内容向上推,而不是在单元格之间添加空格:

当我使用所有插图时:

contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top:15, left: 15, bottom: 15, right: 15))

内容从四面八方向内推:

我做错了什么?

【问题讨论】:

您不能在单元格之间添加空格。但是您可以轻松地使其看起来就像单元格之间有空间一样。 【参考方案1】:

试试这个:

override func layoutSubviews() 
    super.layoutSubviews()
contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10))

另一种解决方案是,如果您在 contentView 中使用 UIView 并在该 View 中声明其他对象,它的行为就像您在单元格之间添加空间一样。

【讨论】:

好的!谢谢,我发现我错了 你的代码我也有同样的问题,现在内容从四面八方向内推。【参考方案2】:

尝试为 inset 设置负值,如下所示:

override func layoutSubviews() 
    super.layoutSubviews()
    contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 0, left: 0, bottom: -10, right: 0))

【讨论】:

我也试过了,不幸的是它不起作用。

以上是关于Swift UIEdgeInsets 无法正常工作,如何在单元格之间添加间距?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - AVAudioPlayer 无法正常工作

swift 3 layoutIfneeded 无法正常工作

Swift - 无法使 PickerView 库正常工作

在 Swift 中复制 Sqlite 数据库无法正常工作

Swift Playgrounds UIButton 无法正常工作

Swift 春季动画在 UITableViewCell 上无法正常工作