Swift UIEdgeInsets не работает должным образом, как добавить расстояние между ячейками?

#ios #swift #xcode #uitableview

Вопрос:

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

У меня есть класс ViewController для UITableView, в котором я указываю информацию:

 struct customCell {
        let title: String
} 

 func configure() {
            models.append(Section(title: "", options: [
             customCell(title: "Sounds"){
            },
}
 

И у меня есть другой класс UITableViewCell, в котором я использую метод layoutSubviews() :

 override func layoutSubviews() {
        super.layoutSubviews()
      
        contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0))
 

Я вижу другие решения на этом веб-сайте, где они получают интервал с помощью UIEdgeInsets.

Я попытался использовать метод layoutSubviews (), но это не сработало, он перемещает содержимое ячейки вверх вместо добавления пробелов между ячейками:

пример

Когда я использую все вставки:

 contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top:15, left: 15, bottom: 15, right: 15))
 

Содержимое проникает внутрь со всех сторон:

введите описание изображения здесь

Что я делаю не так?

Комментарии:

1. Вы не можете добавить пространство между ячейками. Но вы можете легко сделать так, чтобы это выглядело так, как будто между ячейками есть пространство.

Ответ №1:

Попробуйте это:

 override func layoutSubviews() {
    super.layoutSubviews()
contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10))
}
 

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

Комментарии:

1. Хорошо! Спасибо, я нашел, где ошибся

2. С вашим кодом у меня та же проблема, содержимое теперь продвигается внутрь со всех сторон.

Ответ №2:

Попробуйте установить нагативное значение для вставки, например так:

 override func layoutSubviews() {
    super.layoutSubviews()
    contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 0, left: 0, bottom: -10, right: 0))
}
 

Комментарии:

1. Я тоже пробовал это, и, к сожалению, это не работает.