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

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

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

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

07.05.2014, 16:36. Просмотров 624. Ответов 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."?

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

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

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

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

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

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

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 16:36
Привет! Вот еще темы с ответами:

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

Как динамически менять размер массива? - C++
Вот я сделал программу, и она вроде как бы работает, но может есть боле верный способ? (Программа создает массив пока елемент не равено...

Как динамически изменять размер окна в PyQt? - Python
При добавлении в лейбл текста, форма расширяется, а при удалении виджета лейбл, форма не принимает исходных размеров по ширине: import...

Можно ли как-то динамически изменить размер страницы? - JavaScript
То есть,к примеру, можно ли как-то изменить максимальный scroll


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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