Llamo al método -(void)setEditing:(BOOL)editing animated:(BOOL)animated
en mi código para alternar entre dos botones en el RHS de mi barra de navegación.Cómo animar un cambio de botón en UINavigationBar?
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// Toggle ‘+’ and ‘Add To Order’ button.
if(editing) {
self.navigationItem.rightBarButtonItem = self.addItemButton;
}
else {
self.navigationItem.rightBarButtonItem = self.addToOrderButton;
}
}
Dónde self.addItemButton
y self.addToOrderButton
son ivars contienen UIBarButtonItems predefinidos, de configuración en awakefromNib
.
El botón de self.addToOrderButton
es significativamente más ancha que la de self.addItemButton
, así que me gustaría su ser una animación sutil entre los dos anchos cuando se activa el cambio de estado de edición (pulsando un estándar editButtonItem
en la LHS de la navegación.
Si me rodeo toda la if:else
con [UIView beginAnimations:nil context:NULL];
y [UIView commitAnimations];
el botón cambio no animar, pero con sus posiciones de vuelo en su lugar de forma individual desde la parte superior izquierda en lugar de en su lugar y simplemente animar a sus anchuras.
Cómo animo el elemento de la barra de navegación s de modo que cada uno individual (el botón RHS, el título) se anima de maneras más apropiadas y restringidas?
He aceptado la respuesta, ya que eso hace exactamente lo que describes y funciona bien. Muchas gracias. Como un aparte, ¿hay un método para ajustar la animación real que está ocurriendo? Como se presenta aquí, eso hace un fundido cruzado, lo que está bien, pero una combinación de fundido cruzado para el texto y movimiento animado del botón LHS para el 'marco' sería aún mejor. – creednmd
No hay un método directo en el SDK, no. Probablemente podría implementar algo usted mismo, pero no sería trivial (algo así como anular el método con una categoría y reemplazarlo con su propia transición). – lxt
Suena como algo en lo que necesitaría estudiar los documentos; gracias por ponerme en el camino correcto sin embargo. – creednmd