【发布时间】:2011-02-16 01:05:57
【问题描述】:
我在我的代码中调用-(void)setEditing:(BOOL)editing animated:(BOOL)animated 方法来在导航栏右侧的两个按钮之间切换。
-(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 中的按钮宽得多,所以我希望它们在触发编辑状态更改时成为两个宽度之间的微妙动画(通过点击标准@987654328 @ 在导航的 LHS 上。
如果我用[UIView beginAnimations:nil context:NULL]; 和[UIView commitAnimations]; 将整个if:else 包围起来,按钮的变化确实会产生动画效果,但是它们的位置(从左上角单独飞到适当的位置)而不是在适当的位置并且只是为它们的宽度设置动画。
我如何为导航栏元素设置动画,以便每个单独的元素(RHS 按钮、标题)以更合适、更克制的方式进行动画处理?
【问题讨论】:
标签: iphone ios animation uinavigationbar uibarbuttonitem