Получить кадр для UITableViewCellAccessoryType

Я хочу представить поповер. В настоящее время я могу получить кадр всей ячейки (как описано здесь). Можно ли получить рамку аксессуара (UITableViewCellAccessoryType)?

Я хочу получить значение в accessoryButtonTappedForRowWithIndexPath или же didSelectRowAtIndexPath,

2 ответа

Лучшее, что я могу придумать, - это рассчитать кадр с фиксированными размерами. Сначала вы получаете кадр ячейки с rectForRowAtIndexPath, Чем вы рассчитываете accessoryType Рамка. В моем случае я могу дать код на C#, но вы можете легко перевести его на Objective-C или накатить собственное решение:

int detailDisclosureSize = 24;
RectangleF accessoryPosition = new RectangleF(cellPosition.X + cellPosition.Width - detailDisclosureSize * 2.45f, cellPosition.Y + cellPosition.Height/2 - detailDisclosureSize/2, detailDisclosureSize, detailDisclosureSize);

cellPosition является результатом от rectForRowAtIndexPath, Теперь вы можете перевести его в реальные координаты с помощью convertRect:toView:,

Но решение не будет работать, если появится новый размер экрана. Так как в настоящее время нет другого решения, я пойду с этим или со всем размером ячейки.

В didSelectRowAtIndexPath

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
CGRect accessoryRect = cell.accessoryView.frame;
Другие вопросы по тегам