working uitableviewcell resizing not different uitableview dynamic row-height

uitableviewcell - uitableviewautomaticdimension not working



Cambiar una altura de fila de uitableviewcell especĂ­fica mientras se desplaza una vista uitable (1)

Tengo una vista UITable con 2 secciones, 1 fila en la primera sección y una cantidad variable de filas para la segunda sección. Cuando el usuario desplaza la tabla hacia arriba (moviendo el dedo hacia arriba), la vista de tabla es lo predeterminado, pero cuando el usuario se encuentra en la parte superior de la vista válida y se desplaza hacia abajo (moviendo el dedo hacia abajo), debería verse como la primera celda del la altura de la primera sección aumenta tanto como el usuario se desplaza hacia abajo (y al soltar el toque cambiará la altura de la fila a su altura original de 100). Lo intenté

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{ if(scrollView.contentOffset.y < 0){ [mainTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection: 0]] withRowAnimation:UITableViewRowAnimationNone]; } } -(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{ if(indexPath.section == 0 && tableView.contentOffset.y < 0){ return -tableView.contentOffset.y+100;//Default height is 100 } }

pero el método reloadRows restablece el contentOffset a 0, por lo que la tabla solo tartamudea cuando lo hago. Parece que si esto no funciona, entonces tendré que escribir todo en UIScrollView y me parece un gran dolor sin células reciclables.

¿Alguien tiene alguna sugerencia?


No es necesario volver a cargar la fila, solo cambié el marco directamente. Asegúrese de establecer cell.layer.masksToBounds = YES y hacer que las subViews en la celda sean mayores que la altura original de la celda.

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (mainTable.contentOffset.y < 0) { UITableViewCell *cell = [mainTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; float rawr = mainTable.contentOffset.y; cell.frame = CGRectMake(cell.frame.origin.x, rawr, cell.frame.size.width, 100-rawr); } }