如何在UITableViewCells之间添加间距 - Swift

时间:2016-04-17 18:15:04

标签: ios swift uitableview

我有一张包含一些自定义的表格。

Photo of my tableView

这是我的代码:

import UIKit

class ViewController: UIViewController, UITableViewDelegate {
    var exercises : [String] = ["Swimming", "Running", "Weight Lifting", "Biking", "Climbing"]

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    //Necessary for basic tableView setup. Defines number of rows in a specific section.
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        //Setting the amount of rows to the number of elements in exercises. This function returns that.
        tableView.backgroundColor = UIColor.clearColor()
        return exercises.count

    }

    //Necessary for basic tableView setup. Helps us out content for every cell in the index path. Runs = rows
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{



        tableView.separatorColor = UIColor.clearColor()

        //Setting the footer to default so the extra junk does not show
        tableView.tableFooterView = UIView()

        //This will be returned. This automatically creates a prototype cell
        var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

        //Setting every cell to the respective item in exercises
        cell.textLabel?.text = exercises[indexPath.row]
        cell.textLabel?.font = UIFont(name: "Avenir-Light", size: 17)
        cell.textLabel?.textColor = UIColor.whiteColor()
        cell.textLabel?.textAlignment = .Center

        //Border Code
        cell.layer.borderWidth = 2.0
        cell.layer.borderColor = UIColor.whiteColor().CGColor

        //Round Corners
        cell.layer.cornerRadius = 20




        return cell

    }
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        cell.backgroundColor = UIColor.clearColor()

    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

我希望每个UITableViewCell之间有一些间距。我已经尝试了以下内容:

  1. 更改每行的高度。此选项不起作用,因为我有边框。添加更多高度只会使每一行看起来更大。

  2. 将每行转换为一个部分,然后使用heightForHeader in section. The post。我想避免使用此选项,因为我必须将所有行转换为部分。

  3. 在每行中添加透明的UIView。同样,这个选项不起作用,因为我有边框。

  4. 还有其他选择吗?

    由于

3 个答案:

答案 0 :(得分:2)

首先,您应该将tableView相关代码移出tableView:cellForRowAtIndexPath,最好移至viewDidLoad

override func viewDidLoad {
  super.viewDidLoad()
  tableView.separatorColor = UIColor.clearColor()
  tableView.tableFooterView = UIView()
}

其次,UITableViewCells是可重用的对象,因此在需要时它们会被tableView队列出来:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  var cell = tableView.dequeueReusableCellWithIdentifier("Cell")
  if cell == nil {
    cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
  }
  ...
}

至于你的问题,你应该在tableView上设置rowHeight

override func viewDidLoad {
  super.viewDidLoad()
  ...
  tableView.rowHeight = 100.0
}

或实施tableView:heightForRowAtIndexPath:代替:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
  return 100.0
}

您还应该更新textLabel的边框和角半径值而不是单元格:

//Border Code
cell.textLabel.layer.borderWidth = 2.0
cell.textLabel.layer.borderColor = UIColor.whiteColor().CGColor

//Round Corners
cell.textLabel.layer.cornerRadius = 20  

答案 1 :(得分:0)

我尝试了ozgur的方法,但它没有用,因为我的表视图单元格之间有边界。最后,我使用了this post的答案。希望它有所帮助

答案 2 :(得分:0)

您可以通过在单元格内创建一个额外视图来添加间距,该视图包含在顶部和底部之间具有间距的单元格内容。使单元格的背景颜色半透明,它看起来好像单元格在其上方和下方有间距