2016-06-11 16 views
5

Mam widok tabeli z wieloma komórkami w nim. Chcę uzyskać ramkę komórki, a nie w jej współrzędnych przestrzeni superwizji, ale w przestrzeni współrzędnych widoku tabeli.Jak mogę uzyskać ramkę komórki widoku tabeli w przestrzeni współrzędnych widoku tabeli?

Obraz prawdopodobnie wytłumaczyć lepiej

enter image description here

Zobacz czerwony prostokąt? To jest ramka komórki tabeli. A niebieski prostokąt to ramka widoku tabeli. Chcę uzyskać czerwony prostokąt, który jest względem niebieskiego prostokąta.

Próbowałem użyć właściwości frame z UITableViewCell. Ale to nie działa, ponieważ zwraca (0, 0, 320, 44). Wartość Y nie powinna wynosić zero, ponieważ komórka nie znajduje się w górnej części ekranu.

Według hierarchii widzenia jest to zamierzone zachowanie, ponieważ superview komórki tabeli jest widocznie ten UITableViewWrapperView, a nie widok tabeli:

enter image description here

podczas gdy widok tabeli jest następująca:

enter image description here

Więc jest jakiś sposób/nieruchomość, która może załatwić mi CGRect który reprezentuje ramkę widoku tabeli komórka w obszarze współrzędnych widoku tabeli?

Myślę, że istnieje funkcja, która umożliwia konwersję CGRect w przestrzeni współrzędnych na inną. Ale zapomniałem jego nazwy i sposobu użycia. Nie wiem, czy jest to pomocne w tej sytuacji.

Odpowiedz

12

proszę skorzystać z poniższego kodu

let rectOfCell= tableView.rectForRowAtIndexPath(indexPath) 
let rectOfCellInSuperview = tableView.convertRect(rectOfCell, toView: tableView.superview) 
+0

Co jest 'rectOfCellInTableView'? Czy chodziło Ci o 'rectOfCell'? – Sweeper

+0

To nie działa dla mnie. Wydaje się, że metoda 'convertRect' nie uwzględnia wysokości nagłówków sekcji. Prostokąt jest nieco wyższy niż komórka tabeli. tj. ma jakieś -y przesunięcie. – Sweeper

+0

Następnie możesz spróbować uzyskać rect dla sekcji, a następnie dodać y + (heightOfCell) (indexPath.row) komórki, aby uzyskać pozycję komórki y. –

Powiązane problemy