当tableView在编辑模式之间切换时,我试图在backBarButtonItem和取消按钮之间获得平滑动画。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
UIBarButtonItem *leftButton = editing ? [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:nil] : self.navigationItem.backBarButtonItem;
[self.navigationItem setLeftBarButtonItem:leftButton animated:YES];
}
这正确地更改了leftBarButtonItem,但更改是即时的,而不是预期的动画转换。我还尝试过使用[self.navigationController.navigationItem setHidesBackButton:YES animated:YES];
的各种内容,但所有动画都略显不稳定。
任何人对此有任何想法,上面的代码使用两个UIBarButtonItems,但与backBarButtonItem断开。
我很感激任何帮助,谢谢。
修改
这是我目前最好的解决方案,但动画似乎对我来说有些偏差。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
if (editing) {
[self.navigationItem setHidesBackButton:YES animated:NO];
[self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:nil] animated:YES];
} else {
self.navigationItem.leftBarButtonItem = nil;
[self.navigationItem setHidesBackButton:NO animated:YES];
}
}
答案 0 :(得分:0)
将更改放在UIView动画块中:
[UIView animateWithDuration:0.5 animations:^(void) {
self.navigationItem.leftBarButtonItem = leftButton;
}];
然后你可以修改动画的速度。