2010-11-23 12 views
6

Estoy tratando de animar la etiqueta de texto en una celda UItableview cuando presiono el botón editar. Estoy tratando de hacer que se desvanezca y se desvanezcan. desapareciendo en las obras, pero cuando presiono 'editar' la etiqueta de texto desaparece y cuando presiono 'listo' me desvanece perfectamente.texto animado en uitableviewcell usando willTransitionToState

¿Alguien me puede decir por qué no funciona?

gracias de antemano

- (void)willTransitionToState:(UITableViewCellStateMask)state { 
[super willTransitionToState:state]; 

if ((state & UITableViewCellStateEditingMask) || (state & UITableViewCellStateShowingDeleteConfirmationMask)) { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    label.alpha = 0.0; 
    [UIView commitAnimations]; 
} 
} 

- (void)didTransitionToState:(UITableViewCellStateMask)state { 
[super didTransitionToState:state]; 

if (!(state & UITableViewCellStateEditingMask) && !(state & UITableViewCellStateShowingDeleteConfirmationMask)) { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    label.alpha = 1.0; 
    [UIView commitAnimations]; 
} 
} 

Respuesta

6

de todo lo que había leído Estaba seguro de la willTransitionToState era el camino a seguir. Incluso funciona perfectamente si usa didTransitionToState aunque la transición se inicia después de que finaliza la transición de edición normal.

Como resulta que creo que desea utilizar setEditing

- (void)setEditing:(BOOL)editing animated:(BOOL)animate 
{ 
    [super setEditing:editing animated:animate]; 

    if(editing) { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     label.alpha = 0.0; 
     [UIView commitAnimations]; 
    } else { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     label.alpha = 1.0; 
     [UIView commitAnimations]; 
    } 
} 
+1

+1 funciona en MonoTouch también. – tomfanning

12

me di cuenta que al entrar willTransitionToState que las animaciones fueron desactivadas. Lo siguiente lo arregló.

- (void)willTransitionToState:(UITableViewCellStateMask)state 
{ 
    [super willTransitionToState:state]; 

    //Should be enabled by default...but apparently not 
    [UIView setAnimationsEnabled:YES]; 
... 
} 
+3

No sabe por qué pueden tener desactivadas las animaciones, por lo que puede guardar el valor devuelto por + [UIView areAimationsEnabled] antes de su bloque de animación y restaurar el valor al final del método. – Alej

Cuestiones relacionadas