How to give space between two cells in tableview?

前端 未结 26 1457
谎友^
谎友^ 2020-11-29 00:11

I want a space between two cell in table view,

I want cell like this,

\"enter<

相关标签:
26条回答
  • 2020-11-29 00:46

    in your cellForRowAt

    cell.layer.borderWidth = 2
    cell.layer.cornerRadius = 10
    cell.layer.borderColor = UIColor.systemBackground.cgColor
    
    0 讨论(0)
  • 2020-11-29 00:50

    The multiple sections answer would work, but it's extremely brittle, and doesn't allow for actual sections. Instead, you should create a custom cell, or custom cell prototype that simply has a gap at the bottom and/or top.

    Use your struts and springs in IB to maintain that uniform gap, and use heightForRowAtIndexPath to return a height that includes the gap.

    0 讨论(0)
  • 2020-11-29 00:51

    Objective - C

     UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 3)];/// change size as you need.       
     separatorLineView.backgroundColor = [UIColor whiteColor];// you can also put image here
     [cell.contentView addSubview:separatorLineView];
    

    Swift 3 (This same will work for Swift 4 also)

    var separatorLineView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 3))
    /// change size as you need.       
    separatorLineView.backgroundColor = UIColor.white
    // you can also put image here
    cell.contentView.addSubview(separatorLineView)
    

    It worked for me.

    0 讨论(0)
  • 2020-11-29 00:54

    My easy solution using Swift :

    // Inside UITableViewCell subclass
    override func layoutSubviews() {
        let f = contentView.frame
        let fr = UIEdgeInsetsInsetRect(f, UIEdgeInsetsMake(10, 10, 10, 10))
        contentView.frame = fr
    }
    

    or one line code

    override func layoutSubviews() {
        contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, UIEdgeInsetsMake(10, 10, 10, 10))
    }
    

    Result

    0 讨论(0)
  • 2020-11-29 00:55

    I use like:

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 194.0;
    }
    
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        cell.contentView.backgroundColor = UIColor.clearColor()
        let whiteRoundedView : UIView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, 185))
    
        whiteRoundedView.backgroundColor = UIColor( red: CGFloat(61.0/255.0), green: CGFloat(117.0/255.0), blue: CGFloat(147.0/255.0), alpha: CGFloat(1.0))
    
        whiteRoundedView.layer.masksToBounds = false
        whiteRoundedView.layer.cornerRadius = 3.0
        whiteRoundedView.layer.shadowOffset = CGSizeMake(-1, 1)
        whiteRoundedView.layer.shadowOpacity = 0.5
        cell.contentView.addSubview(whiteRoundedView)
        cell.contentView.sendSubviewToBack(whiteRoundedView)
    }
    

    Get Color Code RGB values from:

    0 讨论(0)
  • 2020-11-29 00:55

    Here is my method with Swift 3:

    In ViewDidLoad(), add:

    self.tableView.rowHeight = 500.0
    

    In tableview "CellForRowAt", add following:

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    
        // Configure the cell...
        var actualContentView = UIView()
        actualContentView.frame = CGRect(x: 10, y: 10, width: cell.contentView.frame.width - 20, height: cell.contentView.frame.height - 20)
        actualContentView.backgroundColor = UIColor.blue
        cell.contentView.addSubview(actualContentView)
    
        return cell
    }
    
    0 讨论(0)
提交回复
热议问题