Как анимировать изменение кнопки в UINavigationBar?

Я вызываю - (void) setEditing: (BOOL) анимированный метод редактирования: (BOOL) анимированный в моем код для переключения между двумя кнопками на правой стороне панели навигации.

-(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 , поэтому я бы хотел, чтобы при изменении в состоянии редактирования запускается (при нажатии стандартного editButtonItem на левой панели навигации.

Если я окружу весь if: else с помощью [UIView beginAnimations: nil context: NULL]; и [UIView commitAnimations]; изменение кнопок действительно анимируется, но с их положением - перемещаясь на место индивидуально сверху слева - а не на месте и просто анимируя их ширину.

Как я анимирую элементы панели навигации, чтобы каждый из них (кнопка RHS, заголовок) анимировался более подходящим и ограниченным образом?

36
задан creednmd 15 February 2011 в 16:42
поделиться