Как получить размер UITableViewCell?

Как получить размер прямоугольника UITableViewCell?

Я пытаюсь отображать pop-hover каждый раз, когда пользователь нажимает на ячейку, и хотел бы, чтобы поп-паук показывался по центру в каждой ячейке:

[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68) 
                              inView:self.view 
            permittedArrowDirections:UIPopoverArrowDirectionDown 
                            animated:YES];

Ответ 1

Пришлось сделать это недавно. Вам нужно использовать [tableView rectForRowAtIndexPath].

Однако одна из вещей, которые могут вас поймать, заключается в том, что при прокрутке UITableView вам нужно учитывать смещение (то есть, что-то, сообщающее о своей позиции в виде 3000 пикселей, конечно, означает 3000 от вершины UITableView - не 3000 пикселей на экране).

В дополнение к этому он, естественно, появится в верхней части ячейки, поэтому вам нужно добавить половину высоты ячейки в вычисления.

Этот код работал хорошо для меня:

CGRect frame = [tableView rectForRowAtIndexPath:indexPath];
CGPoint yOffset = self.tableView.contentOffset;
[self.popoverController presentPopoverFromRect:CGRectMake(frame.origin.x, (frame.origin.y + 45 - yOffset.y), frame.size.width, frame.size.height)

В моем случае каждая ячейка была высотой 90 пикселей, поэтому бит +45. Замените половину своей высоты ячейки.