iOS динамическое представление таблицы, чтобы иметь границы вокруг него - PullRequest
0 голосов
/ 03 октября 2018

У меня есть табличное представление, в котором высота строки является динамической согласно ее содержанию UILabel (используя UITableViewAutomaticDimension).Теперь мне нужно 15-ти точечную рамку вокруг таблицы, которая также изменяется в зависимости от высоты таблицы.

Я пробовал два подхода -

  • Взял UIView и поместилTableView сверху с ограничениями по 15 на каждой стороне (сверху, снизу, слева и справа).

  • Добавлено четыре UIViews вокруг tableView с ограничением 0 для каждого
    представленияк табличному виду.(чтобы представления всегда были присоединены к tableView).

В обоих подходах вид снизу (или нижняя область) всегда дает пространство по направлению к дну tableView.

И для достижения динамической высоты для tableView я использую следующий код -

open override func viewDidLayoutSubviews() {
        if isPopup! {

            tableView.frame = CGRect(x: tableView.frame.origin.x, y: tableView.frame.origin.y, width: tableView.frame.size.width, height: tableView.contentSize.height + 190)

            tableView.reloadData()
        }
    }

Вот мой раскадровка и результат на симуляторе -

Simulator Screenshot Storyboard screenshot

Как сделать так, чтобы нижний UIView всегда был прикреплен к основанию tableView, чтобы он выглядел как граница вокруг tableView?

1 Ответ

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

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

class AutoHeightTableView: UITableView {

    override var contentSize: CGSize {
        didSet {
            invalidateIntrinsicContentSize()
        }
    }

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

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