una sofas sofa sillones separados precios pieza modulos modulares modernos fama diseñar ios uitableview animation

sofas - ¿Cómo puedo cambiar un iOS UITableViewCell?



sofas fama precios (3)

No veo por qué no puedes usar [UIView animateWithDuration ...].

Puede tener dos UIViews en cada celda cuya escala anime. El primero sería visible y el segundo estaría oculto

En el punto medio de la animación, simplemente oculta el primer UIView y muestra el segundo y continúa la animación desde allí.

Tengo una vista de tabla con varias celdas. Cada celda tiene un pequeño botón de información "i", que me gustaría que el usuario pueda hacer clic para editar la información en esa celda, "volteando" la celda de la derecha.

Tengo un XIB de celda de tabla por separado para cada uno de los dos estados de celda posibles, y cellForRowAtIndexPath proporciona el XIB correcto (con un identificador de celda diferente) dependiendo de si se supone que la celda está en la vista normal o en la vista de detalle / edición. Esto funciona bien usando, por ejemplo, reloadRowsAtIndexPaths para reflejar el estado modificado cuando se presiona el botón "i".

Pero no puedo imaginar cómo animar una tapa cuando se presiona el botón "i" de la celda. Voltear no es una de las opciones para "withRowAnimation" en reloadRowsAtIndexPaths. Y el uso de un enfoque de animación estándar como UIView animateWithDuration no funciona: reloadRowsAtIndexPaths solo hace que la celda relevante se recargue instantáneamente, ignorando las instrucciones de animación. Incluso traté de usar drawViewHierarchyInRect para recoger el estado futuro de la celda como una imagen, pero no pude hacer que la celda se redibujara lo suficientemente rápido como para ser recogido por drawViewHierarchyInRect (y no quiero que el usuario vea realmente el resultado de la animación antes de la animación).

¿Alguien tiene una idea de cómo manejar esto?

EDITAR

Para resumir, el desafío que tengo es: ¿hay otra forma de intercambiar los contenidos de la célula UITableView con una XableViewable Xib diferente de reloadRowsAtIndexPaths (que rompe animaciones), sin causar problemas con los IBOutlets del nuevo Xib? (Cargando como un Nib en una subvista parece romper los IBOutlets.) Las respuestas hasta ahora no han abordado esto.


Probablemente no desee volver a cargar los datos de la tabla para voltear una celda determinada. Tus células deberían poder voltearse "por su cuenta". Por lo tanto, necesitará subclasificar UITableViewCell y en su subclase tendrá algo así como una función de flip , que hace algunas animaciones de las subvistas de la celda.

Ahora aquí hay un truco con animaciones invertidas. No puede simplemente cambiar la jerarquía de vista y voltear al mismo tiempo, o verá la "parte posterior" de su vista en el momento incorrecto durante la animación. Use dos animaciones en una fila:

[UIView animateWithDuration:... { // Flip the content "half way" by rotating 90 degrees about the y axis. // At the end of this animation your view will be perpendicular to the // screen and *not visible*. contentView.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 1, 0); } completion: { // Here you can rearrange your views (remember the view isn''t visible // right now! // // When the "back side" views are all ready, you can kick off the second // half of the flip animation. [UIView animateWithDuration:... { // Flip *back* to the identity (not all the way around to M_PI) // because if you flip all the way around your views will actually // be flipped. You don''t want that. Users will instinctively see // the movement as *continuous* and interpret the flip back and forth // animation as one continuous rotation all the way around. contentView.layer.transform = CATransform3DIdentity; } }


Será complicado si utilizas dos UITableViewCell subclases, en su lugar utilizas una única UITableViewCell subclasificada, y realizas flip-animation por ejemplo,

deje que xib contenga la subclase UITableViewCell en su contenido agregue dos vistas

  1. vista normal
  2. Vista volteada

En esta vista, agregue los contenidos que desea mostrar, y asegúrese de que ambos tengan salida en la celda, por ejemplo, que tomé

en las dos vistas anteriores, primero View-FlipView y su etiqueta y botón de contenido y el segundo también es lo mismo que la primera vista, la vista superior debe ser la vista normal
conecte las acciones del botón a la celda y simplemente realice lo siguiente en la celda personalizada

//flip the view to flipView - (IBAction)flipButtonAction:(UIButton *)sender { [UIView transitionWithView:self.contentView duration:0.6 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ [self.contentView insertSubview:_flipView aboveSubview:_normalView]; } completion:^(BOOL finished) { }]; } //flip the view back to normalView - (IBAction)flipBackButtonAction:(id)sender { [UIView transitionWithView:self.contentView duration:0.6 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ [self.contentView insertSubview:_normalView aboveSubview:_flipView]; } completion:^(BOOL finished) { }]; }

y se verá como algo debajo

cualquier problema solo comenta ... :) espero que esto te ayude ... :)