@boobooking

Как сделать высоту TableView «плавающей», но кратной константе?

Подскажите как можно реализовать такую конфигурацию через AutoLayout или в коде.

Экран приложения разделен на две части - наверху шапка с текстом, под ней таблица UITableView. В таблице ширина ячейки фиксированная (назовем эту ширину X).

Ширина шапки будет меняться, но есть обязательный минимум, допустим 70. То есть ширина шапки >= 70.

Я хочу реализовать, чтобы ширина таблицы всегда (при любом варианте устройств) была кратна ширине ячейки X. Для разных размеров устройств ширина таблицы будет "плавать", но обязательно чтобы она всегда оставалась кратной X.

Соответственно, всё оставшееся пространство (которое не хватает, чтобы разместить еще одну ячейку X) автоматически добавляется к ширине шапки над таблицей.

Пример, на картинке.

5a97bd01a1350355639510.png
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
maximglobak
@maximglobak
iOS developer
да, ты можешь такое реализовать. Если я правильно понимаю, то в тексте у тебя надо заменить все слова "Ширина" на "Высоту"?
Тут только математические расчеты
Надо еще понять что у тебя в приоритете, высота ячейки Х (70) или четное количество ячеек на экране. Потому что оба условия могут не совпасть.
1) Сначала высчитай сколько у тебя всего высот Х поместится на экране.
maxPossibleCellsNumberOnScreen = (screenHeight - statusBarHeight) / X
2) привязываешь в коде (autolayout) таблицу к нижней границе, а высоту таблицы = Х * ( количество ячеек )
Но количество ячеек не должно превышать количество maxPossibleCellsNumberOnScreen - 1 (место для хедера)
3) Привязываешь хедер от верхней границы таблицы до верхней границы экрана
Но есть еще нюанс, если таблица скролится, и у нее идеально скрыта ячейка, то пользователь может не понять, что таблицу можно скролить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы