Как мне динамически изменить высоту UITableView? - PullRequest
7 голосов
/ 23 августа 2009

В моем приложении я хотел бы изменить размер высоты табличного представления, когда он находится в режиме редактирования, по сравнению с его отсутствием (чтобы освободить место для редактирования элементов управления ниже табличного представления)

Как это сделать?

Ответы [ 3 ]

13 голосов
/ 24 ноября 2011

Я обнаружил, что манипулирование свойством "bounds" может привести к неожиданному поведению, когда у вас есть плавающая таблица внутри другого представления. Иногда таблица расширяется вверх при увеличении высоты, хотя начало координат все еще 0,0.

Свойство frame может быть более эффективным:

CGRect tvframe = [tableView frame];
[tableView setFrame:CGRectMake(tvframe.origin.x, 
                                tvframe.origin.y, 
                                tvframe.size.width, 
                                tvframe.size.height + 20)];
5 голосов
/ 23 августа 2009

Вам необходимо установить границы таблицы:

CGRect tvbounds = [tableView bounds];
[tableView setBounds:CGRectMake(tvbounds.origin.x, 
                                tvbounds.origin.y, 
                                tvbounds.size.width, 
                                tvbounds.size.height + 20)];
2 голосов
/ 23 августа 2009

Можно реализовать делегаты табличного представления tableView:willBeginEditingRowAtIndexPath: и tableView:didEndEditingRowAtIndexPath:, чтобы выяснить, когда данная строка (и, следовательно, таблица) входит и выходит из режима редактирования соответственно.

Оттуда вы можете просто настроить значение свойства frame.size.height табличного представления (необязательно внутри блока анимации UIView) в зависимости от ситуации. Также может быть полезно проверить свойство editing табличного представления в целом внутри методов делегата, в случае, если вы получаете несколько вызовов любого метода делегата до получения каких-либо вызовов их дополнительных методов.

Подробнее:

  • UITableView : editing свойство
  • UITableViewDelegate : tableView:willBeginEditingRowAtIndexPath: метод (didEndEditing также есть в этом документе)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...