Форум программистов, компьютерный форум, киберфорум
Наши страницы
Swift
Войти
Регистрация
Восстановить пароль
 
cheerful_weasel
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 19
#1

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

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

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

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

http://www.cyberforum.ru/swift/thread1707827.html
Код
        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):

Перерисовка кастомного View
Доброго времени суток! У меня есть класс, унаследованных от UIView, отрисовка...

По нажатию кнопки на View Controllere открыть Table View Controller
Как по нажатию кнопки на View Controllere открыть Table View Controller

Вместо navigation bar с table view хочу сделать просто view controller
добрый вечер. В xcode есть стандартный темплейт с navigation controller, ...

Table View Cell
Есть Table View Cell. Как сделать переход по нажатью push на View Controller& ...

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

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

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

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

Как узнать реальную высоту заголовка DataGrid
Высота заголовков столбцов определяется автоматически, свойство DataGrid...

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


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

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

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