Я вызываю метод -(void)setEditing:(BOOL)editing animated:(BOOL)animated в своем коде для обмена двумя кнопками на RHS моей панели навигации.
-(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;
}
}
Где self.addItemButton и self.addToOrderButton - ivars, содержащие предопределенные UIBarButtonItems, установите в awakefromNib.
Кнопка в self.addToOrderButton значительно шире, чем та, что находится в self.addItemButton, поэтому Id, как и их, будет тонкой анимацией между двумя ширинами, когда запускается изменение состояния редактирования (путем нажатия стандартного editButtonItem на LHS навигации.
Если я окружаю весь if:else с помощью [UIView beginAnimations:nil context:NULL]; и [UIView commitAnimations];, смена кнопки делает анимированный, но с их позициями, летающими на место отдельно от верхнего левого угла, а не на месте и просто анимацией их ширины.
Как я одушевляю элементы панели навигации, чтобы каждый отдельный (кнопка RHS, заголовок) оживлял более подходящие, сдержанные способы?