2009-03-26 9 views
16

Mi objetivo es hacer que las UITableViewCells se desvanezcan cuando se acercan a los límites de UITableView y están a punto de ser cubiertas/reveladas.Determinar las coordenadas de una UITableViewCell mientras se desplaza

El enfoque que he estado intentando es obtener las coordenadas de la UITableViewCell durante un evento de desplazamiento. El problema es que cada celda parece estar en 0,0. Intenté convertir las coordenadas a la tabla principal y a la vista, pero siguen apareciendo en 0,0.

Por lo tanto, en general, si alguien conoce una forma de obtener las coordenadas, o de una mejor manera de desvanecer UITableViewCells dentro y fuera en función de su posición, agradecería cualquier consejo que pueda tener.

Gracias por su tiempo, Joel

+0

Yo también, me encontré con el mismo problema, incluso en la interfaz de usuario, el marco tiene ancho y alto, pero el resultado devuelto 0, 0, 0, 0 para x, y, ancho, alto. – RainCast

Respuesta

60

El primer paso es usar

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

que informará la CGRect de una célula dentro de la tableView. Sin embargo, este valor no cambia a medida que se desplaza tableView. Es la posición relativa a la primera fila de la tabla (y no a la primera fila visible). Para obtener la posición de la celda en la pantalla usted tiene que convertir a los superviews sistema de coordenadas utilizando

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

Así que la siguiente línea lo hace todo

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

+0

¡Thx todavía funciona como un encanto! –

+0

¿Cuál es el equivalente de UICollectionView? –

+0

Esto no funciona para mí. – Zigglzworth

0

sospechan que las células se mantienen dentro de las células de tamaño '' subvistas del UITableView por lo que están viendo un marco de relación con ese punto de vista.

No tengo una respuesta real para usted, pero le sugiero que consulte la clase de delegado de UIScrollView: UIScrollViewDelegate. Responde a – scrollViewDidScroll: y puede calcular manualmente su desplazamiento a partir de eso. UIScrollView es una superclase de UITableView.

Puede convertir puntos (como su origen) en las coordenadas de otra vista utilizando el método - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view de UIView.

3

¿Por qué no una superposición con un PNG degradado parcialmente transparente en un UIImageView que es menos translúcido en la parte superior e inferior?

Engañar con el dibujo de la celda en el desplazamiento de la tabla va a tener un gran golpe de rendimiento.

2

Puede llamar

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

para obtener el rect de cualquier célula dada. Esto contendrá sus coordenadas en la estructura de origen dentro del rect.

Cuestiones relacionadas