2009-03-26 9 views
16

Mein Ziel ist es, die UITableViewCells Ein-/Ausblenden, wenn sie die Grenzen der UITableView nähern und darüber zu decken/zu decken.Ermitteln Sie die Koordinaten einer UITableViewCell beim Scrollen

Der Ansatz, den ich versucht habe, ist, die Koordinaten der UITableViewCell während eines Scroll-Ereignisses zu erhalten. Das Problem ist, dass jede Zelle bei 0,0 zu sein scheint. Ich habe versucht, die Koordinaten in die Eltern-Tabelle und Ansicht zu konvertieren, aber sie kommen immer noch bei 0,0 heraus.

Also, im Allgemeinen, wenn jemand einen Weg, um die Koordinaten zu erhalten, oder von einem besseren Weg über verblassen UITableViewCells in und out auf ihre Position wissen, würde ich sehr schätzen, alle Ratschläge, die Sie haben können.

Vielen Dank für Ihre Zeit, Joel

+0

ich auch, traf ich das gleiche Problem, auch auf UI der Rahmen hat Breite und Höhe, aber das Ergebnis zurückgegeben 0, 0, 0, 0 für x, y, Breite, Höhe. – RainCast

Antwort

60

Der erste Schritt ist

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

die die CGRect einer Zelle innerhalb des Tableview berichten zu verwenden. Dieser Wert ändert sich jedoch nicht, wenn die Tabelle angezeigt wird. Es ist die Position relativ zur ersten Zeile der Tabelle (und nicht die erste sichtbare Zeile). Um die Position der Zelle auf dem Bildschirm zu erhalten haben Sie es zu dem superviews konvertieren Koordinatensystem

CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];

So ist die folgende Zeile macht alles

CGRect rect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath] toView:[tableView superview]]; .

+0

Thx funktioniert immer noch wie ein Charme! –

+0

Was ist das Äquivalent für UICollectionView? –

+0

Dies funktioniert nicht für mich. – Zigglzworth

0

Ich vermute, dass die Zellen in ‚Zelle bemessen‘ Subviews des UITableView gehalten werden, so dass Sie einen Rahmen relativ zu dieser Ansicht sehen.

Ich habe keine tatsächliche Antwort für Sie, aber ich würde empfehlen, UIScrollView Delegate Klasse auschecken: UIScrollViewDelegate. Es reagiert auf – scrollViewDidScroll: und Sie können manuell Ihren Offset daraus berechnen. UIScrollView ist eine Oberklasse von UITableView.

Mit der UIView-Methode - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view können Sie Punkte (z. B. Ihren Ursprung) in Koordinaten einer anderen Ansicht konvertieren.

3

Warum nicht eine Überlagerung mit einem teilweise transparenten Gradienten PNG in einer UIImageView, die oben und unten weniger durchscheinend ist?

Das Durcheinander mit der Zellenzeichnung im Tabellenscrolling wird einen großen Leistungseinbruch bedeuten.

2

können Sie

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath; 

rufen Sie die rect jeder gegebenen Zelle zu erhalten. Dies wird seine Koordinaten in der Ursprungsstruktur innerhalb des Rechtecks ​​enthalten.

Verwandte Themen