Как я могу получить реагировать размер UITableViewCell?
Я пытаюсь отобразить поп-парение каждый раз, когда пользователь нажимает на ячейку и хотел бы, чтобы поп-парение казалось центрируемым на каждой ячейке:
[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
Пришлось сделать это недавно. Вам необходимо использовать [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». Замените половину своей собственной высоты ячейки.