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

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

Войти
Регистрация
Восстановить пароль
 
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
#1

Динамические компоненты на Scroll-е (autolayout). Вёрстка - Программирование iOS

17.02.2015, 20:03. Просмотров 644. Ответов 4
Метки нет (Все метки)

Здравствуйте. В сториборде есть вьюха freeform вышиной примерно 700 на ней во всю растянут scrollview на нем лежит динамически меняющаяся таблица (скролл в ней отключен) и view, который тоже динамически должен менять вышину в зависимости от текста лейбла, лежащего в нем. (См. вложение. лейбл в него на картинке не положен.) Сегодня побывал весь день и так и эдак, но либо таблица не растягивается, либо растягивается не полностью, либо не скроллится либо ещё что нибудь.... У меня идеи иссякли. А очень надо! Помогите пожалуйста. Можно либо архивчик с простеньким проектом к ответу прикрепить, либо так на словах описать что с чем и как связать. Заранее спасибо!
0
Миниатюры
Динамические компоненты на Scroll-е (autolayout). Вёрстка  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2015, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамические компоненты на Scroll-е (autolayout). Вёрстка (Программирование iOS):

Xcode AutoLayout - Программирование iOS
Здравствуйте. Я в IB сделал интерфейс с несколькими UILabel. Самый первый label - опциональный, то есть я могу в рантайме удалить его из...

AutoLayout и смена ориентации - Программирование iOS
Добрый день! Использую AutoLayout. При повороте экрана все растягивается как надо. Но на элементы нельзя нажать, тоесть не происходят...

Autolayout and constraints - некорректное расположение контроллов на разных экранах - Objective-C
Подскажите пожалуйста, есть к примеру вот такая вьюшка Т.е на вьюшке имеем к примеру 4 кнопки... суть в том, что когда запускаем...

динамические компоненты - Delphi
Здравствуйте. Мне нужно динамически создавать компонент , при этом что бы он был рандомного цвета, и что бы эти компоненты двигались...

Динамические компоненты - Delphi
Здравствуйте! Нашел свою курсовую в интернете и разумеется у меня с ней вышли нестыковки.) Дело в том, что она с динамическими...

Динамические компоненты - C++ Builder
1.Верно ли, что при создании в программе компонента, его свойства по умолчанию получат те значения, которые мы бы увидели в инспекторе...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
18.02.2015, 00:05 #2
не совсем понял, что именно нужно?
csrollview в нем таблица, после таблицы текст? вам нужно генерировать динамически высоту таблицы и текста под ней?
0
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
18.02.2015, 09:05  [ТС] #3
В общем да, так и есть. А более подробно схема разметки должна выглядеть следующим образом: см. вложения. Сверху неподвижно, как шапка лейбл, картинка и кнопка, а под ними на скролле таблица (без собственного скрола) и вьюха с лейблами, растягивающаяся под их контент. И с динамически растягиваемой под нужды Label вьюхой я проблемму решил сегодня так: привязал лейблы изнутри к вьюхе, максимальное кол-во строк = 0, и linebreak = word wrap. Вьюха растягивается нормально. Но вот как быть со скроллом и таблицей? Получается, что внутри скролла не должно быть ни одного констрейнта на высоту, только на ширину, но для вертикального скролла они необходимы. Иначе он не скролит. А как только появляется ограничение на высоту, то таблица строиться не до конца или не строиться вовсе. И ограничения >=, <= результатов тоже почему то не дают.
0
Миниатюры
Динамические компоненты на Scroll-е (autolayout). Вёрстка  
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
18.02.2015, 20:38 #4
Тогда я бы реализовал следующим образом:
Сначала запрашивал ширину страницы, дальше вычислял высоту таблицы, например в методе heightForRowAtIndexPath. Высоту текста можно определить с мощью следующего метода:
Objective-C
1
2
3
4
5
6
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:размер текста]};
            CGRect labelSize = [name boundingRectWithSize:CGSizeMake(ширина онка, 100000)
                                                       options:NSStringDrawingUsesLineFragmentOrigin
                                                    attributes:attributes
                                                       context:nil];
высота текста = labelSize .size.height;
дальше можно по таким же принципам генерировать текст и таблицу.
Надеюсь я понятно изложил свою мысль. Если нет, пишите
0
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
19.02.2015, 09:35  [ТС] #5
Да изложили понятно. И в таблице и так присутствует расчет высоты ячеек, но не в этом, как оказалась суть проблеммы. На одном из форумов http://www.imaladec.com/forum/index....498#entry12498, мне подсказали не размещать таблицу и вьюху на скролл, а добавить всё что ниже таблице в её футер. Но тут возникла другая проблемка: Вьюконтроллер притерпел некоторые внешние изменения и теперь выглядит так: см вложение 1. Теперь в футере (выделен бирюзовым) лежит сверху кнопка, ниже его вьюха с лейблами (выделена синим), которая то и расширяется динамически, ниже ещё две кнопки и 3 лейбла. Так вот когда синяя вьюха расширяется, она толкает все низ лежащие компоненты вниз, а самый нижний лейбл, в свою очередь не толкает и не расширяет футер. Т.о. в зависимости от вышины синей вьюхи часть низ лежащих компонентов исчезают, хоть и привязаны к низу футеру жесткими связями. Наверное прийдется сумировать высоту всех компонентов, лежащих в футере и назначать её ему. Но вот не могу понять, почему свойство высоты (Frame.Height) у синей вьюхи меняется только после того, как мы вернулись на этот вьюконтроллер из другого, т.е. только во ViewWillAppear. Хотя по факту, визуально высота его меняется мгновенно, после того, как по нажатию кнопки в лейблы попал соответствующий текст.
0
Миниатюры
Динамические компоненты на Scroll-е (autolayout). Вёрстка  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2015, 09:35
Привет! Вот еще темы с ответами:

Динамические компоненты - Delphi
Как динамически создать определённый компанент, например Panel PS люди не сердитесь на меня...я в делфи 3 месяца не был =(

Динамические компоненты C# - C#
Здравствуйте, возникла проблема с созданием динамических компонентов. Создаю компоненты след способом TextBox tb = new TextBox(); ...

Удалить динамические компоненты - Delphi FireMonkey
Создаю динамические компоненты в роли родителя listbox. Как удалить все компоненты на listbox? Пробовал listbox1.children.free и...

Динамические компоненты на форме - Delphi
помогите решить проблему создаю динамические компоненты на форме procedure TForm4.FormActivate(Sender: TObject); var Button:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.02.2015, 09:35
Ответ Создать тему
Опции темы

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