如何在tableView的左右边缘实现tableView的单元格边距?

时间:2017-04-26 05:57:55

标签: ios uitableview tableviewcell

这是我的要求:

我希望我的tableView的单元格像最后一个单元格一样,它的边框是tableView的一些像素,而不是与tableview的边缘相矛盾。(我想这是因为当我点击单元格时,单元格上有灰色效果)

怎么办?

1 个答案:

答案 0 :(得分:0)

你不能调整单元格的大小,而是你可以设置视图的图层属性来达到类似的效果,例如,(你没有提到你正在使用哪种语言,我假设你正在使用swift)。

我假设您的自定义单元格包含UIView和其他一些视图组件,如下所示

enter image description here

并在上图中添加imageHolderView的插座, out,名称将为holderView,如下图所示,

enter image description here

在自定义单元格类中,定义两种选择管理方法,您的自定义单元格类如下所示,

class CustomCell: UITableViewCell {

  @IBOutlet weak var circleNameTextField: UILabel!
  @IBOutlet weak var holderView: UIView!
  var cellindexPath:IndexPath?
  var selectedIndexPath:IndexPath?


  func selectTheCell() {
    if self.selectedIndexPath?.row == self.cellindexPath?.row {
        self.holderView.layer.cornerRadius = 6.0
        self.holderView.layer.masksToBounds = true
        self.holderView.layer.borderWidth = 4.0
        self.holderView.layer.borderColor = UIColor.red.cgColor
        self.backgroundColor = UIColor.gray
    } else {
        self.resetCellWith(animate: false)
    }
 }

 func resetCellWith(animate:Bool) {

     self.holderView.layer.cornerRadius = 0.0
     self.holderView.layer.masksToBounds = false
     self.holderView.layer.borderWidth = 0.0
     self.holderView.layer.borderColor = UIColor.clear.cgColor
    self.backgroundColor = UIColor.orange
 }
}

现在你要做的就是从控制器调用上面的方法并更新单元格行为,例如,

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.selIndexPath = indexPath
    self.aTableView.reloadSections(IndexSet(integer: 0), with: .none)
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell : CustomCell? = tableView.dequeueReusableCell(withIdentifier: "CUSTOM_CELL", for: indexPath) as? CustomCell//tableView.dequeueReusableCell(withIdentifier: "CUSTOM_CELL") as? CustomCell

    cell?.cellindexPath = indexPath

    if let selectedIndexPath = self.selIndexPath {
        cell?.selectedIndexPath = selectedIndexPath
        cell?.selectTheCell()
    } else {
        cell?.resetCellWith(animate:false)
    }
    cell?.selectionStyle = .none
    return cell!
}

通过上述安排,您可以获得表格单元格和选择,如下所示,

enter image description here

注意:以上是实现此效果的一种方法。和方法名称我只是使用我为不同目的创建的示例项目。 :)