Domanda

Il mio obiettivo è di avere l'UITableViewCells fade in / out, quando si stanno avvicinando i limiti della UITableView e in procinto di essere coperti / rivelato.

L'approccio che ho cercato è quello di ottenere le coordinate del UITableViewCell nel corso di un evento di scorrimento. Il problema è che ogni cellula sembra essere a 0,0. Ho provato a convertire le coordinate alla tabella padre e la vista, ma ancora venire fuori a 0,0.

Quindi, in generale, se qualcuno conosce un modo per ottenere le coordinate, o di un modo migliore per andare su di dissolvenza UITableViewCells dentro e fuori in base alla loro posizione, Io apprezzo molto qualche consiglio si può avere.

Grazie per il vostro tempo, Joel

È stato utile?

Soluzione

Il primo passo è quello di utilizzare

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

, che riporterà la CGRect di una cella all'interno della tableView. Tuttavia, questo valore non cambia, come i rotoli Tableview. È 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]];

Quindi, la seguente riga fa tutto

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

Swift 4

// Consider the indexPath at row 1, section 0.
let rectWithinTableView : CGRect = self.tableView.rectForRow(at: IndexPath(row: 1, section: 0))
let rectWithSuperViewCoordinates : CGRect = self.convert(rect: rectWithinTableView, to: self.tableView.superview)

Altri suggerimenti

Perché non una sovrapposizione con una parzialmente trasparente gradiente PNG in un UIImageView che è meno trasparente in alto e in basso?

Giochi per bambini con il disegno cella nella tabella di scorrimento sta andando a prendere un grande calo di prestazioni.

È possibile chiamare

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

per ottenere il rect di qualsiasi cellulare. Questo conterrà sia le coordinate nel struct origine ai rect.

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

Non ho una risposta reale per voi, ma, vorrei suggerire check-out di classe delegato di UIScrollView: UIScrollViewDelegate. Essa risponde a – scrollViewDidScroll: e si può lavorare manualmente il vostro compensato da questo. UIScrollView è una superclasse di UITableView.

È possibile convertire i punti (come ad esempio la vostra origine) a coordinate di un altro vista utilizzando il metodo - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view di UIView.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top