UITableViewCells swift3之间的间距

时间:2017-12-04 06:28:39

标签: ios uitableview swift3 cellspacing

我正在swift中创建一个IOS应用程序,并希望在这样的单元格之间添加间距

enter image description here

我想为每个表视图单元格提供与我的附加图像相同的空间。 我怎么能这样做?现在所有细胞都没有任何空间。 swift3

7 个答案:

答案 0 :(得分:8)

你可以在你的tableView单元格中尝试这个:

class cell: UITableViewCell{
override var frame: CGRect {
    get {
        return super.frame
    }
    set (newFrame) {
        var frame =  newFrame
        frame.origin.y += 4
        frame.size.height -= 2 * 5
        super.frame = frame
    }
  }
}

答案 1 :(得分:4)

更新:UIEdgeInsetsInsetRect方法已被替换,现在您可以像这样

contentView.frame = contentView.frame.inset(by: margins)

快速4答案:

在您的自定义单元格类中添加此功能

override func layoutSubviews() {
    super.layoutSubviews()
    //set the values for top,left,bottom,right margins
            let margins = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
    contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, margins)
}

您可以根据需要更改值

*****注意***** 调用超级功能

super.layoutSubviews()

非常重要,否则您会遇到奇怪的问题

答案 2 :(得分:2)

  1. 从故事板,您的视图层次结构应该是这样的。 View CellContent(如突出显示)将包含所有组件。
  2. enter image description here

    1. 从顶部,底部,领先位置&处获得10px View CellContent的保证金从其超级视图开始。

    2. 现在,选择tblCell并更改背景颜色。

    3. enter image description here

      enter image description here

      1. 现在运行您的项目,确保委托和数据源正确绑定。
      2. <强>输出

        enter image description here

        注意:我刚刚在UILabel添加了1 View CellContent用于虚拟目的。

答案 3 :(得分:1)

一种简单的方法是集合视图而不是表视图,并将单元格间距提供给集合视图并使用

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
    let widthSize = collectionView.frame.size.width / 1
    return CGSize(width: widthSize-2, height: widthSize+20)
}

如果你只想要tableview然后添加背景视图作为容器视图并设置背景颜色白色和单元格背景颜色清晰颜色设置背景视图的单元格前导,颤音,底部到10

backgroundView.layer.cornerRadius = 2.0
backgroundView.layer.masksToBounds = false
backgroundView.layer.shadowColor = UIColor.black.withAlphaComponent(0.2).cgColor

答案 4 :(得分:1)

如果您使用UITableViewCell来实现此类布局,则无法在UITableViewCells之间提供间距。

您可以选择以下选项:

  1. 使用UIViewUITableViewCell内创建自定义clear background,使其显示为单元格之间的间距。
  2. enter image description here

    您需要设置background as clearcell, content view

    1. 您可以使用UICollectionView代替UITableView。它更加灵活,您可以按照自己的方式进行设计。
    2. 如果您想了解更多相关细节,请与我们联系。

答案 5 :(得分:0)

请试一试。它对我来说很好。

您可以使用部分而不是行。 您在numberOfSectionsInTableView方法中返回数组计数,并在numberOfRowsInSection委托方法

中设置1

[array objectAtIndex:indexPath.section]方法中使用cellForRowAtIndexPath

heightForHeaderInSection设置为40或根据您的要求。

谢谢,希望它会对你有所帮助

答案 6 :(得分:0)

- 静态设置UITableViewCell间距 - Swift 4 - 未经过全面测试。

将tableView行高设置为您喜欢的任何值。

 override func viewDidLoad() {
    super.viewDidLoad()
    tableView.estimatedRowHeight = <Your preferred cell size>
    tableView.rowHeight = UITableViewAutomaticDimension
    // make sure to set your TableView delegates
    tableView.dataSource = self
    tableView.delegate = self
}

 extension YourClass : UITexFieldDelegate, UITextFieldDataSource {
    //Now set your cells.
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "yourCell", for: indexPath) as! UITableViewCell

        //to help see the spacing.
        cell.backgroundColor = .red
        cell.textLabel?.text = "Cell"

        return cell
   }
   //display 3 cells
   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 3
   }

   //now lets insert a headerView to create the spacing we want. (This will also work for viewForHeaderInSection)
   func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    //you can create your own custom view here
    let view = UIView()
    view.frame = CGRect(x: 0, y: 0, width: tableView.frame.width, height: 44) //size of a standard tableViewCell

    //this will hide the headerView and match the tableView's background color.
    view.backgroundColor = UIColor.clear
    return view
 }

  func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 44
  }
}