как изменить высоту таблицы в зависимости от содержимого - PullRequest
0 голосов
/ 01 апреля 2019

Я пытался изменить высоту tableview в зависимости от содержимого, и я сделал это, но вещь ниже tableView будет label.Всякий раз, когда высота стола увеличивается или уменьшается, значение label должно быть ниже.Я попробовал это, но что label находится на той высоте таблицы, которая была задана изначально. Если бы кто-нибудь помог мне сделать это, было бы здорово.

enter image description here

Ответы [ 5 ]

0 голосов
/ 12 апреля 2019
  override func viewDidLoad()    
    { 
        Tablename.estimatedRowHeight = 100  
        Tablename.rowHeight = UITableViewAutomaticDimension
     }

и в своей ячейке Tableview не забывайте указывать верхний, ведущий, конечный и нижний поля для последнего компонента пользовательского интерфейса вашей ячейки, чтобы сделать его динамическим по размеру.

0 голосов
/ 02 апреля 2019

Если вы хотите, чтобы высота ячейки табличного представления увеличивалась на основе метки в ней, вам нужно реализовать несколько таких методов ( Swift 4 )

1- Этот метод сообщает клетке, которая автоматически увеличивает ваш рост

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
    }

2 - Реализуйте предполагаемую высоту строки, как хотите, скажем, 140

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return 140
    }

3- Когда вы поместите метку в ячейку, убедитесь, что количество строк равно «0». Добавьте к нему верхнюю, верхнюю, нижнюю и конечную поля.

0 голосов
/ 01 апреля 2019

В методе viewDidLoad добавьте

self.tableView.estimatedRowHeight = 44 // высота ячейки табличного представления по умолчанию

И затем добавьте это в свой класс,

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}
0 голосов
/ 01 апреля 2019

Сначала удалите приведенный ниже код, если вы использовали в своем коде. Нам это не нужно.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50
}

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

    /*  Setup title label  */
    NSLayoutConstraint.activate([
        titleLabel.topAnchor.constraint(equalTo: topAnchor, constant: 0),
        titleLabel.leftAnchor.constraint(equalTo: leftAnchor, constant: 10),
        titleLabel.rightAnchor.constraint(equalTo: rightAnchor, constant: -10),
        titleLabel.heightAnchor.constraint(equalToConstant: 40)
        ])

    /*  Setup description label  */
    NSLayoutConstraint.activate([
        descriptionLabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 0),
        descriptionLabel.leftAnchor.constraint(equalTo: titleLabel.leftAnchor, constant: 0),
        descriptionLabel.rightAnchor.constraint(equalTo: titleLabel.rightAnchor, constant: 0),
        descriptionLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 0)
        ])

Не забудьте установить numberOfLines в ноль для descriptionLabel. Бум, ты готов.

0 голосов
/ 01 апреля 2019

Прежде всего, вы должны взять представление прокрутки и добавить свое представление таблицы и метку в contentView.Установите высоту contentView как динамическую и установите IBOutlet на ограничение высоты tableView, как показано ниже.

@IBOutlet var constTableHeight : NSLayoutConstraint!

после перезагрузки таблицы установите значение constTableHeight

let heightTBL : CGFloat = (tblView?.contentSize.height)!
constTableHeight?.constant = heightTBL 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...