2009-03-26 20 views
16

Il mio obiettivo è far sì che UITableViewCells si dissolva in entrata/uscita quando si stanno avvicinando ai limiti di UITableView e sta per essere coperto/rivelato.Determinazione delle coordinate di UITableViewCell durante lo scorrimento

L'approccio che ho cercato è quello di ottenere le coordinate di UITableViewCell durante un evento di scorrimento. Il problema è che ogni cella sembra essere a 0,0. Ho provato a convertire le coordinate nella tabella genitore e visualizzare, ma sono ancora in uscita a 0,0.

Quindi, in generale, se qualcuno conosce un modo per ottenere le coordinate, o di un modo migliore per svanire UITableViewCells dentro e fuori in base alla loro posizione, sarei molto grato per ogni consiglio che potresti avere.

Grazie per il vostro tempo, Joel

+0

anche io, ho riscontrato lo stesso problema, anche in UI il frame ha larghezza e altezza, ma il risultato ha restituito 0, 0, 0, 0 per x, y, larghezza, altezza. – RainCast

risposta

60

Il primo passo consiste nell'utilizzare

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

che riporterà la CGRect di una cella all'interno della tableView. Tuttavia, questo valore non cambia mentre il TableView scorre. È la posizione relativa alla prima riga della tabella (e non la prima riga visibile). Per ottenere la posizione della cella sullo schermo è necessario convertirlo alle superviews sistema di coordinate utilizzando

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

Così la seguente riga fa tutto

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

+0

Thx funziona ancora come un incantesimo! –

+0

Qual è l'equivalente per UICollectionView? –

+0

Questo non funziona per me. – Zigglzworth

0

ho il sospetto che le cellule si tengano entro 'cellulari di dimensioni' subviews del UITableView modo si sta vedendo un telaio rispetto a quella vista.

Non ho una risposta effettiva per te ma, ti suggerisco di verificare la classe dei delegati di UIScrollView: UIScrollViewDelegate. Risponde allo – scrollViewDidScroll: e puoi calcolare manualmente il tuo offset da quello. UIScrollView è una superclasse di UITableView.

È possibile convertire punti (ad esempio l'origine) in coordinate di un'altra vista utilizzando il metodo - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view di UIView.

3

Perché non un overlay con un PNG a gradiente parzialmente trasparente in un UIImageView meno traslucido in alto e in basso?

La messaggistica con il disegno della cella nello scorrimento della tabella sta per avere un grande successo in termini di prestazioni.

2

È possibile chiamare

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

per ottenere il rect di qualsiasi cellulare. Questo conterrà le sue coordinate nella struttura di origine all'interno del rect.

Problemi correlati