¿Es posible dividir un UIViewController y animar las partes en la parte superior e inferior de la celda seleccionada?

edit1

Comtesting la respuesta de rdelmar para ver una implementación de este


Tengo una maqueta que nuestro equipo quiere hacer. Básicamente, cuando un usuario selecciona una celda, la parte superior de la celda seleccionada se anima a la parte superior y la parte debajo de la celda se anima al background. Según la location de la pantalla, la celda seleccionada es, podría desplazarse hacia arriba o hacia abajo. Revelaba el controller de "detalle" de la celda seleccionada. Un excelente ejemplo de esto lo proporciona la aplicación Hotel Tonight en la list principal.

Aquí hay una muestra:

introduzca la descripción de la imagen aquí

Entonces, mi pregunta, ¿sé que puedo dividir un UITableView pero cómo? Estaba pensando que podría hacerse como un UICollectionView ya que los elementos individuales podrían ser animados. O posiblemente una captura de pantalla UIView. Realmente no he hecho nada como esto, así que cualquier ayuda es apercibida.

Gracias

No he probado nada como la aplicación Hotels Tonight, pero creo que los pasos necesarios para lograr ese aspecto son algo así,

1) Comience con una vista de tabla en UIViewController que tenga una vista principal negra

2) Cree una image de la vista de tabla usando renderInContext,

- (UIImage *)imageWithView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.bounds.size.width, view.bounds.size.height), view.opaque, [[UIScreen mainScreen] scale]); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } 

3) Haz dos imágenes de tu primera image con algo como esto,

 -(NSArray *)createHalvedImages:(CGImageRef) image { NSMutableArray *arr = [NSMutableArray array]; for(int i = 0; i < 2; i++){ float y = i * image.size.height/2.0; CGImageRef tmp = CGImageCreateWithImageInRect(image, CGRectMake(0, y, image.size.width, image.size.height/2)); [arr addObject:[UIImage imageWithCGImage:tmp]]; } } return arr; } 

4) Reemplace la vista de tabla con las dos vistas de image que contienen sus dos imágenes.

5) anima las dos vistas de image para revelar la vista principal negra del controller

6) presenta el controller de detalles de forma modal utilizando la animation de desvanecimiento

Puede usar varias UIView dispuestas una encima de otra, ya sea que la colección sea estática o no. Determine las dimensiones de cada estado y UIView cómo dimensionar cada una de las UIView al tamaño que desee.

Use un UITapGestureRecognizer en su controller de vista y en handleTap: use hitTest:withEvent: llamado self o pointInside:withEvent: en cada UIView para determinar qué fue tocado. Luego usa un método para expandir esa UIView y contraer los otros …

Para animar el cambio, soy un gran fanático de los bloques de animation. Puedes leer sobre ellos aquí .

Si tiene varios loggings para mostrar, use tableview. Y aumente la altura de las filas cuando el usuario select cualquier celda hasta la altura de su deseo. Puede calcular todo esto mediante los methods delegates de tableview y editando tableview.