如何在swift ios中的两个自定义表格视图单元格之间添加间距?

Posted

技术标签:

【中文标题】如何在swift ios中的两个自定义表格视图单元格之间添加间距?【英文标题】:How to add spacing in between two custom Table view cells in swift ios? 【发布时间】:2016-12-21 08:28:17 【问题描述】:
 func numberOfSections(in tableView: UITableView) -> Int 

    return 1



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    return leadername.count

  

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let cell = tableView.dequeueReusableCell(withIdentifier: "leadCell") as! LeaderBoardTableViewCell
    cell.leaderNameLbl.text = leadername[indexPath.row]
    cell.areaLbl.text = areaName[indexPath.row]
    cell.approvalLabel.text = approvalrate[indexPath.row]
    cell.leaderImageView?.image = UIImage(named: leaderImage[indexPath.row])
    cell.backgroundColor = UIColor.white

    //cell.contentView.backgroundColor = transparentColor


            return cell



func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 




func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 

    return 85

我检查了许多解决方案,但没有一个对我有用。我已经更改了单元格高度、表格视图高度等。但这对我不起作用。我们怎样才能做到这一点?请帮忙。

【问题讨论】:

在我看来,有两种方法可以解决您的问题: 1.每个 UITableViewCell 都显示在一个部分中,因此您可以处理每个部分的空间。 2.在UITableViewCell中,将contentView设置为更小,然后显示单元格之间的空间。 @nynohu 如何将内容视图设置得更小?你能在我的代码中告诉我怎么做吗? 如果您使用用户界面,您可以将所有内容添加到 contentView 的子视图中。并且你可以控制这个 subView 的 aize 为你想要的显示。 【参考方案1】:

您可以通过两种方式实现。

1)您可以为每个单元格添加部分,并在部分中添加具有清晰颜色的截面视图,以便在两个单元格之间显示空白。

2) 通过以适当的方式设计表格视图单元格,您可以在两个单元格之间留出空格。

通过 Section footerView :-

func numberOfSections(in tableView: UITableView) -> Int 
    return 5 //yourCellArrayCount;

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 

let view = UIView(frame: CGRect (x:0, y: 0, width:10, height: 10))
    view.backgroundColor = UIColor.clear
    return view
 

如果你想通过 UI 设计显示间距,那么让你的视图比你的单元格容器视图小 10px,并为你的单元格容器视图设置清晰的颜色。

检查此图像您会得到更好的主意。 红色是您单元格的主要容器视图,使其清晰。

您的表格的最终输出是这样的

新更新

更改您的 tableview 方法并放置它。

func numberOfSections(in tableView: UITableView) -> Int 
    return 3

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat 
    return 20

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 
    let view = UIView(frame:CGRect (x: 0, y: 0, width: 320, height: 20) ) as UIView
    view.backgroundColor = UIColor.red
    return view


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    return 1
  

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

let cell = tableView.dequeueReusableCell(withIdentifier: "leadCell") as! LeaderBoardTableViewCell
cell.leaderNameLbl.text = leadername[indexPath.row]
cell.areaLbl.text = areaName[indexPath.row]
cell.approvalLabel.text = approvalrate[indexPath.row]
cell.leaderImageView?.image = UIImage(named: leaderImage[indexPath.row])
cell.backgroundColor = UIColor.white

//cell.contentView.backgroundColor = transparentColor


        return cell


检查此项并更改数据显示的逻辑。我已经对此进行了测试,它将在两个单元格之间显示红色空间。完成后,您可以将红色变为透明色。

【讨论】:

没有变化。它是一样的。我已更改 contentview 背景 clearcolor。 首先取一个单元格,例如 50 * 50 大小,现在将该单元格容器视图设置为清晰的颜色,然后将另一个视图设为大小为 (5,5,40,40) 的 tempView并将其放置在 containerView 现在您需要将所有内容放置在 tempView 中并根据您的 tempView 设置约束。在您的 heightForCell 方法中将高度返回为 50。如果您发现任何问题,请告诉我。 没有变化 能否请您发布您的代码或单元设计,以便我可以帮助您。 您不需要为行提供高度,所以删除它,您可以发布您的单元格设计和表格的实际输出吗?【参考方案2】:

一个不太官方的方法是在 UITableViewCell 的底部添加一个空白的空 UIView。

在自定义表格视图单元格的 init() 中添加以下代码可能会有所帮助:

var blankView = UIView() 
view.backgroundColor = .clear 
addSubview(blankView)
blankView..translatesAutoresizingMaskIntoConstraints = false 
blankView.widthAnchor.constraint(equalTo: widthAnchor).isActive = true 
blankView.heightAnchor.constraint(equalToConstant: 10).isActive = true 

【讨论】:

以上是关于如何在swift ios中的两个自定义表格视图单元格之间添加间距?的主要内容,如果未能解决你的问题,请参考以下文章

从 Swift 中的自定义数据单元开始

防止在表格视图Swift中重用自定义单元格

iOS:自定义表格视图单元格中的约束

SWIFT:表格视图中的 2 个自定义单元格。怎么了?

在 Swift 中将自定义 UITableViewCell 共享到多个 UITableViewController

自定义表格视图单元格上的多个图像(Swift)