Почему UITableViewCell на 1 пиксель выше высоты строки? - PullRequest
0 голосов
/ 09 марта 2010

У меня есть UITableViewController. В viewDidLoad я установил rowHeight:

self.tableView.rowHeight = 43;

Но затем в cellForRowAtIndexPath я проверяю высоту ячейки:

NSLog(@"bounds: w = %f, h = %f", cell.bounds.size.width, cell.bounds.size.height);

Это печатает высоту 44 и ширину 320. Кто-нибудь знает, почему он печатает высоту 44 вместо 43?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 09 марта 2010

Проще говоря, эти две вещи не зависят друг от друга.

Когда вы устанавливаете rowHeight в вашем UITableView объекте, вы говорите ему, как визуализировать таблицу. Значение по умолчанию для rowHeight равно 44.

Когда вы создаете объект UITableViewCell как подкласс UIView, он имеет свои собственные значения по умолчанию frame и bounds, которые включают heightwidth). Значение по умолчанию для height также просто равно 44.

Ваша путаница возникает из-за того, что вы создали объект UITableViewCell и ожидали, что в вашем объекте UITableView будет height, равное (не по умолчанию) rowHeight свойству. Как это может? Он только появился!

Как и все UIView с, пока что-то не придет и явно не изменит свое height, его height не изменится.

3 голосов
/ 19 июня 2012

1. Не забудьте про разделитель UITableView (свойство separatorStyle);)

имеет высоту 1 px.

Установите self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone для простого просмотра таблицы, и вы увидите ожидаемое значение!

Сгруппированный TableView всегда будет иметь разделитель и будет настроен на 1 пиксель.

2. (совет) Используйте свойство cell.contentView.frame (или границы) вместо cell.frame (или границы)

0 голосов
/ 09 марта 2010

У вас есть:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Вы можете реализовать этот метод для возврата 43 независимо от того, что. Вы также можете настроить по своему вкусу. Вот почему он принимает UITableView в качестве первого аргумента. Вы можете иметь несколько UITableView, используя один и тот же делегат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...