Как мне разместить кнопку под UITableView и сделать так, чтобы она двигалась вниз по мере роста таблицы? - PullRequest
0 голосов
/ 10 июля 2019

Требования:
У меня есть стол и кнопка, которую нужно разместить на экране. Таблица может иметь от нуля до нескольких строк. Кнопка должна быть как минимум на 40 пунктов ниже нижней части содержимого таблицы и на 83 пункта выше нижней части экрана. Поэтому, когда строк всего несколько, кнопка находится далеко от последней строки таблицы, но когда строк много, кнопка может не появиться на экране, пока пользователь не прокрутит таблицу.

Я рассмотрел использование нижнего колонтитула UITableView, но он всегда помещал кнопку сразу после последней строки содержимого таблицы.

Сейчас я рассматриваю возможность использования UIScrollView и размещения таблицы и кнопки в представлении, которое увеличивается по мере роста содержимого таблицы. Ограничение высоты стола также будет расти. Я бы использовал ограничение неравенства на кнопке, чтобы оно всегда было как минимум на 40 пунктов ниже нижней части таблицы и на 83 пункта выше нижней части представления.

Есть ли лучший способ? То, что я описал, кажется немного сложным.

Дизайн пользовательского интерфейса, когда стол короткий:
enter image description here

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

Ответы [ 3 ]

0 голосов
/ 10 июля 2019

Это может быть достигнуто с помощью этих 3 ограничений: -

  1. Установить ограничение высоты tableView (Constraint1). Отрегулируйте это значение ограничения в соответствии с содержимым tableView. Если высота ячейки постоянна, то значение этого ограничения будет (количество ячеек * высота ячейки)
  2. Установить ограничение от нижней части tableView до верхней части кнопки (Constraint2). Значение будет> = 40, а приоритет равен Constraint1, по умолчанию 1000.
  3. Установить ограничение от низа суперпредставления до низа кнопки (Constraint3). Значение этого будет 83, и его приоритет должен быть установлен как меньше, чем Constraint1 и Constraint2 (например, 800 или что-то)

Поэтому, когда содержимое табличного представления меньше, будет добавлено 83 отступа Constraint3 снизу, так как Constraint2 готов удлиняться дальше от 40. Но когда содержимое увеличивается, когда есть конфликт между Constraint2 и Constraint3, последний не будет следует учитывать, поскольку он имеет меньший приоритет.

0 голосов
/ 10 июля 2019

Другим решением может быть добавление представления таблицы нижнего колонтитула с вашим пользовательским содержимым. Любое табличное представление имеет заголовок и нижний колонтитул и может быть разработано по вашему желанию.

enter image description here

enter image description here

В моем случае (только для примера) я установил 2 UIViews с меткой внутри (цвет только для того, чтобы показать вам вид), вы можете заменить метку кнопкой и изменить цвет фона. Чтобы показать это или нет, вы можете динамически изменять высоту нижнего колонтитула или, возможно, скрыть или показать вид в зависимости от вашей цели.

Надеюсь, эта помощь:)

0 голосов
/ 10 июля 2019

Вы можете просто использовать определенную ячейку для последней ячейки в вашем tableView.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (Numbers of rows + 1)
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if (isLastRow) {
        return YourCustomCell()
    } else {
        return YourCommonCell()
    }
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if isLastRow {
        return rowHeightForLastRow
    } else {
        return commonRowHeight
    }
}

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

Вы также можете использовать нижний колонтитул tableView с определенной высотой.

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