如何animationUINavigationBar中的button更改?

我正在调用-(void)setEditing:(BOOL)editing animated:(BOOL)animated在我的代码中-(void)setEditing:(BOOL)editing animated:(BOOL)animated方法,以在导航栏-(void)setEditing:(BOOL)editing animated:(BOOL)animated两个button之间切换。

 -(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.addItemButtonself.addToOrderButton是包含预定义的UIBarButtonItems的ivars,在awakefromNib设置。

self.addToOrderButton的button比self.addToOrderButton的button要宽self.addItemButton ,所以我希望当触发编辑状态的变化时,它们是两个宽度之间的细微animation(通过在LHS上点击标准editButtonItem导航。

如果我围绕整个if:else[UIView beginAnimations:nil context:NULL];[UIView commitAnimations]; button更改会生成animation,但其位置会从左上angular单独飞入,而不是原地移动,只是为其宽度设置animation。

如何为导航栏元素设置animation,使每个单独的元素(RHSbutton,标题)以更合适的方式进行animation制作?

 self.navigationItem.rightBarButtonItem = self.addToOrderButton; 

您可以使用特定的方法来设置左右栏button项目的animation效果:

  [self.navigationItem setRightBarButtonItem: self.addToOrderButton animated:YES]; 

…这将为您制作animation。 如果你需要一切的animation(包括标题),你也可以使用导航栏的setItems:animated:方法(将其传递给你想要显示的导航项的数组)