С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Swift

Войти
Регистрация
Восстановить пароль
 
cheerful_weasel
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 19
#1

Как узнать реальную высоту кастомного хедера с автолайаутом в UI Table View? - Swift

10.10.2016, 02:48. Просмотров 562. Ответов 0
Метки нет (Все метки)

У меня есть таблица у которой одна из Prototype Cell является хедером. Ячейка кастомизирована и в ней все элементы привязаны констрейнтами. И высота хедера зависит от загруженного контента. Т.е. картинки, которые загружаются в этот хедер могут быть разной высоты, соответственно и высота хедера тогда изменится автоматически за счёт автолайаута.

Визуально всё это работает хорошо. Я добавил в viewDidLoad строки:

Код
        self.tableView.rowHeight = UITableViewAutomaticDimension
        self.tableView.estimatedRowHeight = 500.0
        self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension
        self.tableView.estimatedSectionHeaderHeight = 500
В результате чего высота ячеек и хедера сама задаётся на основе автолайаута. Проблема возникает если в ячейках есть элементы, которые надо обновлять. К примеру мне нужно в одной из ячеек изменить количество лайков. Я меняю значение в массиве (источнике данных) для соотевтствующей позиции и делаю обновление таблицы в нужной ячейке. В результате чего таблица скролится либо вверх либо вниз на определённую высоту.

Я понимаю, что таблица берёт значения, которые я задал в estimatedRowHeight и умножает на нужное количество позиций и получает сумму высот ячеек и соответственно скролит на эту позицию. Но реальная позиция находится в другом месте и следовало бы сложить реальные высоты ячеек на основе автолайаута.

Как сделать это для ячеек таблицы я узнал. Для этого создаётся массив, где хранятся реальные высоты ячеек, а чтобы заполнить этот массив реальными высотами используется следующий метод:

Код
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
         rowHeights[indexPath.row] = cell.frame.height
    }
Если в таблице нет хедера, то это работает идеально. Но у меня есть хедер и как узнать его реальную высоту я не знаю. Мне кажется это не должно быть сложнее, чем узнать реальную высоту ячейки, но тем не менее я не нашёл этого нигде.

Подскажите, как мне определить реальную высоту хедера? Т.е. ту высоту, которая получилась с учётом высоты всего контента, который содержится в хедере.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2016, 02:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как узнать реальную высоту кастомного хедера с автолайаутом в UI Table View? (Swift):

Как задать минимальную высоту ячейки в table view? - Swift
Всем привет! Я настроил автоматическую высоту ячейки. В label указал количество строк - 0. Все работает отлично, если строк больше одной,...

Перерисовка кастомного View - Программирование iOS
Доброго времени суток! У меня есть класс, унаследованных от UIView, отрисовка объекта этого класса прописана в методе drawRect:. Мне...

По нажатию кнопки на View Controllere открыть Table View Controller - Программирование iOS
Как по нажатию кнопки на View Controllere открыть Table View Controller

Вместо navigation bar с table view хочу сделать просто view controller - Программирование iOS
добрый вечер. В xcode есть стандартный темплейт с navigation controller, но там по дефолту table view controller (master controller)...

Добавление Table View - Программирование iOS
Здравствуйте,как сделать чтобы при нажатии кнопки высвечивался view,в этом view пользователь выбирает настройки,по окончании выбора table...

Table View Cell - Программирование iOS
Есть Table View Cell. Как сделать переход по нажатью push на View Controller& Добавлено через 30 минут Точнее по нажатию на Table...

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

Заполнение Table View Controller - Программирование iOS
Доброе время суток. По нажатию кнопки осуществляется переход с View Controller на Table View Controller. Как мне заполнить строки этого...

Table View Controller не видно ячеек - Программирование iOS
Здравствуйте. Я новичек и решил начать с чтения данной ссылки...

Как узнать реальную высоту заголовка DataGrid - C# WPF
Высота заголовков столбцов определяется автоматически, свойство DataGrid ColumnHeaderHeight равно NaN. Как узнать настоящую высоту? Я знаю,...

CDbCommand failed to execute the SQL statement: SQLSTATE[42S02]: Base table or view not found: 1146 Table doesn't exist - PHP БД
CDbException CDbCommand failed to execute the SQL statement: SQLSTATE: Base table or view not found: 1146 Table 'auto.mashin_att'...


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

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

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