在swift 2中的一个部分中添加单元格之间的空间

Posted

技术标签:

【中文标题】在swift 2中的一个部分中添加单元格之间的空间【英文标题】:Adding space between cells in a section in swift 2 【发布时间】:2016-01-05 09:32:52 【问题描述】:

我需要在 swift 2.1 中添加填充,以便在每个部分的每个单元格之间添加空间

但我所做的只是为我不想要的部分添加标题。

如何在动态表格单元格之间添加空格?

添加标题的代码如下:

    // Set the spacing between sections
    override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 
        return 10
    

    override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
        let header = UIView()
        header.backgroundColor = UIColor.clearColor()
        return header
    

这里是创建表格视图的代码:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    return 1



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return self.tableData.count



override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell  

    //Table view cells are reused and should be dequeued using a cell identifier.
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)

    let rowData = self.tableData[indexPath.row]

    cell.textLabel!.text = rowData.name
    cell.textLabel!.textAlignment = .Right


    if let url  = NSURL(string: rowData.img),
        data = NSData(contentsOfURL: url)
    
        cell.imageView?.image = UIImage(data: data)
    



    return cell
    

现在我的表格视图如下所示:

更新代码和表格视图:

【问题讨论】:

空间到底应该在哪里?在每个单元格之间? 你想增加两个单元格之间的空间? @ChikabuZ 我想在两个单元格之间添加空格 @MehulSojitra 是的,我需要在两个单元格之间添加空格 使用tableview的委托方法heightForRowAtIndexPath,它将返回单元格的高度。 【参考方案1】:

表格视图中的单元格之间没有间距。仅在集合视图中。

可供您选择的选项是...

    改为使用集合视图。让它看起来像一个表格视图相对容易。使用它,您可以使用项目间间距。

    将单元格的高度增加 2 个像素,并在每个单元格的顶部或底部添加一个空白区域。这会产生在它们之间添加空间的错觉。

【讨论】:

感谢您的回答,但我怎样才能实现第二种方法? @anonymox 如果您目前的身高为 100。然后只需将其更改为 102。但请保持所有视图的原样。所以图像仍然会从 0(顶部)到 100(底部)。所以它的底部到单元格边缘的间隙为 2。 我已经按照你说的做了,只是单元格的高度变成了 102。所有的内容仍然彼此接近。请注意我的表格视图正在动态创建内容 @anonymox 是的,您可能正在使用 AutoLayout 创建单元格。您需要更新内容以在底部留出空隙,这样内容就不会仅仅增长以适应新的高度。 我已将单元格高度设置为 105,将内容高度设置为 40,但它们之间仍然没有空间。我可以使用部分而不是单元格来显示我的内容吗?【参考方案2】:

您应该只设置单元格高度:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat

   return 100 //cell height

更新:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat

   if indexPath.row % 2 == 0
   
      return 100 //cell height
   
   else
   
      return 5 //space heigh
   


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell  

    //Table view cells are reused and should be dequeued using a cell identifier.
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)

    if indexPath.row % 2 == 0
    
        let rowData = self.tableData[indexPath.row/2]

        cell.textLabel!.text = rowData.name
        cell.textLabel!.textAlignment = .Right

        if let url  = NSURL(string: rowData.img),
            data = NSData(contentsOfURL: url)
        
            cell.imageView?.image = UIImage(data: data)
        
        else
        
            cell.imageView?.image = nil
        
    
    else
    
        cell.textLabel!.text = nil
        cell.imageView?.image = nil
    
    return cell

【讨论】:

你的方法只是改变了单元格的高度!不要为它们添加填充! 谢谢。更新的方法有效。但是有一点问题,单元格之间的空间被文本填充!让它变得丑陋知道如何解决它吗?我已将新的表格视图屏幕截图放在上面的帖子中 你应该设置 cell.textLabel!.text = nil 和 cell.imageView?.image = nil 如果它是空间单元格。 你的意思是我把这两行放在 else 块中:cell.textLabel!.text = nil cell.imageView?.image = nil ...对不起,我还是 swift 的新手! 但这里的问题是我需要先写“ index let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)" 行以使单元格可读!这是不可能的。【参考方案3】:

您可以使用 HeightForRowAtIndexPath 或更改大小检查器下 tableView Xib 中的“行高”...

或者您可以查看此链接以获取objective-c:https://***.com/a/14726457/4489420...在此它将根据您的数组计数创建部分...

【讨论】:

【参考方案4】:

增加高度有两种方法

    在情节提要中选择您的 tableview 并在 size inspector

    中设置 rowHeight(更适合您实施)

    在你的 viewController 中添加这个函数

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
      return 35;//Whatever height you want...
    

【讨论】:

感谢回复,但它对我不起作用。我需要像填充一样不改变单元格高度的东西!因为我的内容是动态生成的 在情节提要中执行此操作的一种方法,自动布局...为您的 imageView 的超级视图添加顶部和/或底部约束..【参考方案5】:

如果您使用的是动态高度,请选中此项...https://www.facebook.com/iosApplicationDevelopers/posts/1297809426911662

【讨论】:

【参考方案6】:

表格视图单元格在设计上是连续的:两个连续的单元格之间没有“空格”;只有 1 点粗的分隔线(你可以去掉)。

可以在每个单元格内添加“填充”(= internal 空格)(即,使它们更高 - 请参阅其他答案),但是 您不能在它们之间添加“边距”(= external 空格)(这会在每个单元格之间给您两个分隔符,也许...?)。

集合视图单元格,另一方面,确实允许单元格之间有额外的空间。

【讨论】:

感谢参与,但如何以编程方式向表格视图单元格添加填充? 像其他人提到的那样,使用heightForRowAtIndexPath() 并返回您想要的总高度(内容+填充)。

以上是关于在swift 2中的一个部分中添加单元格之间的空间的主要内容,如果未能解决你的问题,请参考以下文章

向不同部分的单元格添加多个复选标记,并将其状态保存在Swift iOS中

如何在 UITableView 部分之间添加空间?

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

在 calendarTableView 自定义单元格中添加视图破坏了代码 Swift 4

Swift:UICollectionView - 固定单元格之间的空间

Swift - tableView中的可移动行仅在一个部分内,而不是在一个部分之间