Получить кадр для 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;