我在我的代码中调用-(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
是包含预定义UIBarButtonItems的ivars,请在awakefromNib
中进行设置。
self.addToOrderButton
中的按钮明显宽于self.addItemButton
中的按钮,所以我希望它们在触发编辑状态更改时(通过点击)在两个宽度之间成为一个微妙的动画导航LHS上的标准editButtonItem
。
如果我用if:else
和[UIView beginAnimations:nil context:NULL];
围绕整个[UIView commitAnimations];
,按钮更改会生成动画,但是他们的位置会从左上角单独飞行到位,而不是就位只是动画他们的宽度。
我如何设置导航栏元素的动画,以便每个人(RHS按钮,标题)以更合适,更有限的方式制作动画?
答案 0 :(得分:74)
self.navigationItem.rightBarButtonItem = self.addToOrderButton;
您可以使用特定方法为右侧和左侧条形按钮项设置动画:
[self.navigationItem setRightBarButtonItem: self.addToOrderButton animated:YES];
...将为您制作动画。如果您需要动画的所有内容(包括标题),您还可以使用导航栏的setItems:animated:
方法(将其传递给您想要显示的导航项目数组)