Как получить прямоугольный размер UITableViewCell? - PullRequest
10 голосов
/ 20 апреля 2010

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

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

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

1 Ответ

38 голосов
/ 20 апреля 2010

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

Однако одна из вещей, которые могут вас поймать, заключается в том, что при прокрутке UITableView необходимо учитывать смещение (то есть что-то, сообщающее о своей позиции y в виде 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». Замените половину вашей собственной высоты клетки.

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