2

I have searched for hours trying stackOverFlows solutions to this issue!!! All of which cause my custom UITable Cells to overlap and not space out. I just want my spacing to be automatic like 'return UITableView.automaticDimension' but say + 8 so that my custom cells aren't right next to each other. I cannot figure it out and maybe it is because I have one line of code that I shouldn't.

This is my cocoa touch class that creates my custom cell 'DiscussionTableViewCell':

class DiscussionTableViewCell: UITableViewCell {

lazy var backView: UIView = {
    let view = UIView(frame: CGRect(x: 10, y: 6, width: UIScreen.main.bounds.width - 20, height: 55))
    view.backgroundColor = UIColor.rgb(r: 194, g: 208, b: 242)
    //view.layer.borderWidth = 3
    return view
}()
lazy var discussionTitleLabel: UILabel = {
    let LDiscussionTitleLabel = UILabel(frame: CGRect(x: 4, y: 6, width: backView.frame.width - 116, height: 30))
    LDiscussionTitleLabel.textAlignment = .left
    LDiscussionTitleLabel.font = UIFont.boldSystemFont(ofSize: 18)
    return LDiscussionTitleLabel
}()
lazy var discussionDescriptionLabel: UILabel = {
    let LDiscussionDescriptionLabel = UILabel(frame: CGRect(x: 4, y: 27, width: backView.frame.width - 30, height: 30))
    LDiscussionDescriptionLabel.textAlignment = .left
    LDiscussionDescriptionLabel.font = UIFont.systemFont(ofSize: 16)
    LDiscussionDescriptionLabel.textColor = UIColor.gray
    return LDiscussionDescriptionLabel
}()
override func awakeFromNib() {
    super.awakeFromNib()
    //layoutMargins = UIEdgeInsets(top: 8, left: 0, bottom: 8, right: 0)
    // Initialization code
}

override func layoutSubviews() {
    //super.layoutSubviews()

    contentView.backgroundColor = UIColor.rgb(r: 203, g: 215, b: 242)
    backgroundColor = UIColor.yellow
    backView.layer.cornerRadius = 5
    backView.clipsToBounds = true
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    addSubview(backView)
    backView.addSubview(discussionTitleLabel)
    backView.addSubview(discussionDescriptionLabel)
    // Configure the view for the selected state
}

}

And a section of my ViewController that applies to assigning text to the table cell, and spacing between cells:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return discussionTitles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! DiscussionTableViewCell
        cell.discussionTitleLabel.text = discussionTitles[indexPath.row]
        cell.discussionDescriptionLabel.text = discussionDescriptions[indexPath.row]
        return cell
    }
    return UITableViewCell()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if (singlePageVar == 100) {
        return 1407//UITableView.automaticDimension
    }
    return 62//UITableView.automaticDimension
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
       print("section: \(indexPath.section)")
       print("row: \(indexPath.row)")
    var topicNumberRow = (indexPath.row)
        mainTopicNumberRow = topicNumberRow
    DiscussionBoardTopicThread()
}

//function I call in viewdidload to show table

func setupDiscussionBoard() {

  discussionBoardView.separatorStyle = .none
  view.addSubview(discussionBoardView)
  discussionBoardView.backgroundColor = UIColor(red: 203/255, green: 215/255, blue: 242/255, alpha: 1.0)
  discussionBoardView.dataSource = self
  discussionBoardView.delegate = self
  discussionBoardView.translatesAutoresizingMaskIntoConstraints = false
  discussionBoardView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
  discussionBoardView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
  discussionBoardView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
  discussionBoardView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
  discussionBoardView.register(DiscussionTableViewCell.self, forCellReuseIdentifier: "cell")

    }
}
  • Does this answer your question? [spacing between UITableViewCells](https://stackoverflow.com/questions/28598830/spacing-between-uitableviewcells) – dahiya_boy Mar 23 '20 at 06:36
  • @dahiya_boy I tried all of those solutions, none are working! I don't know what's wrong with my code – The Retro Gamer Mar 23 '20 at 06:49
  • Can you also post a screenshot? – Glenn Posadas Mar 23 '20 at 07:01
  • `UITableView.automaticDimension` only work if your table view cell has contraints all four side, but **DiscussionTableViewCell** don't have a single constraints, therefore, **return UITableView.automaticDimension == 0 + 8** so you will get only 8 spacing – Prashant Tukadiya Mar 23 '20 at 08:03

0 Answers0