iOS AutoLayout самостоятельно определяет размер всей таблицы (не ячеек!) - PullRequest
0 голосов
/ 01 октября 2018

Я создаю приложение для iOS, которое содержит довольно сложное представление прокрутки (представление, таблица, представление, изображение и т. Д.), И мне любопытно: могу ли я создать таблицу с саморазмером с помощью Auto Layout ?.

Что я хочу: если таблица содержит три строки, то высота таблицы равна этим трем строкам, но если в таблице 50 строк, то высота таблицы не превышает десяти строк.

Я посмотрел на ограничение "высота равна или меньше, чем XXX", но это, очевидно, не работает.

1 Ответ

0 голосов
/ 01 октября 2018

Я объяснил, как это сделать несколько лет назад в этом ответе .Этот ответ в Objective-C.Код просто перевести на Swift, но я сделаю это за вас:

Создайте подкласс UITableView.В вашем подклассе переопределите intrinsicContentSize:

class MyTableView: UITableView {
    override var intrinsicContentSize: CGSize {
        layoutIfNeeded()
        return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
    }
}

Если вы измените число строк в табличном представлении после его первоначальной настройки, вы должны указать табличному представлению значение invalidateIntrinsicContentSize() после этого, чтобыНапример, после вызова reloadData(), endUpdates() и т. д. Или вы можете переопределить эти методы в MyTableView для автоматического вызова invalidateIntrinsicContentSize().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...