Как добавить интервал между UITableViewCell

Есть ли способ добавить расстояние между UITableViewCell?

Я создал таблицу, и каждая ячейка содержит только изображение. Изображение присваивается ячейке следующим образом:

cell.imageView.image = [myImages objectAtIndex:indexPath.row];

но это делает изображение увеличенным и вписывается во всю ячейку, и между изображениями нет промежутков.

Или, скажем, таким образом, высота изображения, например, 50, и я хочу добавить 20 интервалов между изображениями. Есть ли способ сделать это?

36 ответов

ТаблицаViewCell ->

         override open var frame: CGRect {
    get {
        return super.frame
    }
    set {
        var frame =  newValue
        frame.size.height -= 2
        super.frame = frame
    }
}

Добавьте внутренний вид к ячейке, затем добавьте свои собственные представления к ней.

Чтобы добавить интервал между строками, следует использовать вторую ячейку-прототип.

Добавьте другой идентификатор ячейки во вторую ячейку прототипа, затем добавьте пустое представление и ограничьте его края краями ячейки, а затем установите для цвета emptyView значение «clear».

Затем в вашем коде:

      import UIKit

class YourViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
        
        @IBOutlet weak var yourTableView: UITableView!
        
        let yourArray = ["data1", "data2", "data3" /* so on */ ]

        let emptyTransparentRowHeight: CGFloat = 10
        
        override func viewDidLoad() {
            super.viewDidLoad()
    
            yourTableView.dataSource = self
            yourTableView.delegate = self
        }
            

        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return (yourArray.count * 2)
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            guard indexPath.row % 2 == 0,
                let usableCell = tableView.dequeueReusableCell(withIdentifier: "Your First Cell Prototype Identifier") as? YourTableViewCellSubClass
            else {
                
                return tableView.dequeueReusableCell(withIdentifier: "The Second and Empty Cell Prototype Identifier")!
            }
      
            usableCell.Label?.text = yourArray[indexPath.row/2]
            
            return usableCell
    
        }
        
        func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            if indexPath.row % 2 == 0 {
                return tableView.rowHeight
            }
            
            return self.emptyTransparentRowHeight
        }
        
    }

Используйте UITableViewDelegate, heightForRowAtIndexPath и верните высоту строки.

 (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
 return 100.0f ;
}

Решение Swift 5.0

Внутри подкласса UITableViewCell

override func layoutSubviews() {
    super.layoutSubviews()
    let padding = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
    bounds = UIEdgeInsetsInsetRect(bounds, padding)
}

Вот реальное решение

используйте разделы вместо строк, потому что каждая строка имеет 1 раздел, поэтому вы можете выделить место для заголовка и нижнего колонтитула раздела, вот код, просто вставьте его в свой класс viewcontroller, где вы создаете выход tableview

если вы хотите, чтобы верхний интервал просто использовал heightForHeaderInSection, если вы хотите нижний интервал, просто используйте heightForFooterInSection, как показано ниже

просто скопируйте и вставьте это

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

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let v = UIView()
    v.backgroundColor = UIColor.clear
    return v
}

    func numberOfSections(in tableView: UITableView) -> Int {
        return 10
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }
Другие вопросы по тегам