Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Ячейки, динамически меняющие размер - Программирование iOS/iPhone

07.05.2014, 16:36. Просмотров 595. Ответов 0
Метки нет (Все метки)

Всем привет!

Надеюсь, что мой очередной вопрос из серии "у меня все работает, но реализация смущает" не вызовет отторжения. Мне кажется, привыкнуть делать что-то через одно место - это не многим лучше, чем не уметь этого делать вовсе. Поэтому, хотел бы попросить совета по моей задаче:

Есть CollectionView (iPhone), в которой находятся раскрывающиеся по клику ячейки. Конкретнее - при клике на ячейку она увеличивается в длину, открывая свои дополнительные поля. При повторном клике, соответственно, сжимается обратно.

Дополнительных полей у ячейки может быть много. Но, если модель данных не предоставляет информации для каких-то полей - то эти поля не отображаются, сокращая тем самым высоту раскрытой ячейки.

Как я реализовал этот функционал:
1) Для открытия/закрытия я нарисовал ячейку со следующей иерархией:
topViews
additionalViews (где находятся все дополнительные поля)
bottomViews

У topViews и bottomViews задан constraint height, а у центрального - нет.
После того, как на ячейку кликнули первый раз (открыли) - я в методе sizeForItemAtIndexPath для нее возвращаю высоту == сумме высот всех трех групп View.
Когда же ее закрыли - то возвращаю только сумму высот topViews и bottomViews, и в этом случае additionalViews, как не имеющая констрейнт высоты - сжимается до нуля.

2) Для уменьшения/увеличения размера ячейки, в зависимости от кол-во требуемых полей для отображения:
Провел аутлеты от каждого констрейнта высоты каждого поля.
В sizeForItemAtIndexPath проверяю - если в модели данных инфа для конкретного поля отсутствует, я отнимаю от результирующего CGSize.height значение констрейнта для этого поля, и устанавливаю этот констрейнт в ноль.

В результате все работает, но консоль прямо горит от разных ворнингов на тему "Unable to simultaneously satisfy constraints.". Неприятно((

Что вы скажете о моем подходе? Он неправильный в корне, и надо искать пути с другой стороны, или, в принципе, нормально, но просто где-то что-то немного не сходится, провоцируя эти самые "Unable to simultaneously satisfy constraints."?

Спасибо всем кто прочитал, а особенно - высказал свое мнение по поводу моей реализации.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 16:36     Ячейки, динамически меняющие размер
Посмотрите здесь:

C# Динамически изменять размер формы
Элементы меню, меняющие свой размер, в зависимости от состояния HTML, CSS
Максимальный размер приложения
Objective-C Кастомная таблица не отображает ячейки, пока я не буду ее прокручивать
Неизвестный объект занимает всю область ячейки UITableViewCell Objective-C
Запрет сдвига ячейки в режиме удаления в iOS7 и iOS8
Constraints и размер UIView
Как динамически изменять высоту TableView при изменяющихся высотах CustomViewCell
Динамическая высота ячейки
Минимальный размер ОЗУ для программирования под iOS
Создание ячейки при клике Swift
Как задать минимальную высоту ячейки в table view? Swift

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 17:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru