Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
VV0lk
11 / 1 / 1
Регистрация: 25.12.2011
Сообщений: 177
1

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

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

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

Xcode AutoLayout
Здравствуйте. Я в IB сделал интерфейс с несколькими UILabel. Самый первый label...

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

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

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

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

4
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
18.02.2015, 00:05 2
не совсем понял, что именно нужно?
csrollview в нем таблица, после таблицы текст? вам нужно генерировать динамически высоту таблицы и текста под ней?
0
VV0lk
11 / 1 / 1
Регистрация: 25.12.2011
Сообщений: 177
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 / 1
Регистрация: 25.12.2011
Сообщений: 177
19.02.2015, 09:35  [ТС] 5
Да изложили понятно. И в таблице и так присутствует расчет высоты ячеек, но не в этом, как оказалась суть проблеммы. На одном из форумов http://www.imaladec.com/forum/index....498#entry12498, мне подсказали не размещать таблицу и вьюху на скролл, а добавить всё что ниже таблице в её футер. Но тут возникла другая проблемка: Вьюконтроллер притерпел некоторые внешние изменения и теперь выглядит так: см вложение 1. Теперь в футере (выделен бирюзовым) лежит сверху кнопка, ниже его вьюха с лейблами (выделена синим), которая то и расширяется динамически, ниже ещё две кнопки и 3 лейбла. Так вот когда синяя вьюха расширяется, она толкает все низ лежащие компоненты вниз, а самый нижний лейбл, в свою очередь не толкает и не расширяет футер. Т.о. в зависимости от вышины синей вьюхи часть низ лежащих компонентов исчезают, хоть и привязаны к низу футеру жесткими связями. Наверное прийдется сумировать высоту всех компонентов, лежащих в футере и назначать её ему. Но вот не могу понять, почему свойство высоты (Frame.Height) у синей вьюхи меняется только после того, как мы вернулись на этот вьюконтроллер из другого, т.е. только во ViewWillAppear. Хотя по факту, визуально высота его меняется мгновенно, после того, как по нажатию кнопки в лейблы попал соответствующий текст.
0
Миниатюры
Динамические компоненты на Scroll-е (autolayout). Вёрстка  
19.02.2015, 09:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2015, 09:35

Динамические компоненты C#
Здравствуйте, возникла проблема с созданием динамических компонентов. Создаю...

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

Динамические компоненты
Как динамически создать определённый компанент, например Panel PS люди не...


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

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

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