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

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

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

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

07.05.2014, 16:36. Просмотров 611. Ответов 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     Ячейки, динамически меняющие размер
Посмотрите здесь:

Как динамически изменять высоту TableView при изменяющихся высотах CustomViewCell - Программирование iOS
Здравствуйте. Пишу на Mono но думаю, что с кодом на Obj-C разберусь. В общем есть UITableView заполняю его кастомными ячейками для каждой...

Динамическая высота ячейки - Программирование iOS
Добрый день. Подскажите как посчитать высоту ячейки? Все приметы которые я нашел в инете, считают высоту ячейки в зависимости от текста в...

Создание ячейки при клике - Swift
Всем доброго дня! Помогите пожалуйста решить проблему. Есть TableView со статическим отображением ячеек. Настроены 2 ячейки (первая...

Constraints и размер UIView - Программирование iOS
У меня, допустим, есть UIView добавленная на родительскую View и к ней применены space constraints со всех четырех сторон, то есть она...

Максимальный размер приложения - Программирование iOS
Здравствуйте! Собираюсь создать приложение, которе содержит большую базу данных SQLite, около 400мб. На сайте эппл нашел это: iOS apps...

Элементы меню, меняющие свой размер, в зависимости от состояния - HTML, CSS
Столкнулся с непосильной задачей. Меню в две строки, внутри каждого элемента текст, расположен по центру вертикально и горизонтально,...

Изменить размер объекта динамически - Unity, Unity3D
Как динамически изменить размер объекта? transform.localScale не работает. using UnityEngine; using System.Collections; public...

Динамически изменять размер формы - C#
Нужно динамически изменять размер формы в зависимости от подгружаемого на неё контрол. На форму грузяться как маленькие так и боьшие...

Динамически изменить размер массива - Turbo Pascal
я знаю как збыльшити масив в Basic(dim w() as integer redim w(3)),а как зделать такое на паскале???

Как динамически увеличить размер массива? - C++ Builder
К примеру, задаю массивint Array;читаю данные с устройства и получается так, что данных пришло более 1000 позиций. Дело в том, что я...

FileStream и динамически изменяющийся размер файла - C#
Здравствуйте! Такой вопрос - если у меня например идет закачка файла с сервера в файл, и я создаю в этот момент FileStream для этого...

как динамически менять размер массива? - C++
Мир Вашей Хате!!! А подскажите пжалста как динамически менять размер массива, или укажите где можно почитать, или примерчиком...


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

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

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