Как добраться, реагируют размер UITableViewCell?

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

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

[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68) 
                              inView:self.view 
            permittedArrowDirections:UIPopoverArrowDirectionDown 
                            animated:YES];
10
задан balexandre 20 April 2010 в 15:39
поделиться

1 ответ

Пришлось сделать это недавно. Вам необходимо использовать [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». Замените половину своей собственной высоты ячейки.

38
ответ дан 3 December 2019 в 14:00
поделиться