在backBarButtonItem和UIBarButtonItem之间制作动画

时间:2014-11-14 19:29:50

标签: ios uitableview animation uibarbuttonitem

当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];
    }
}

1 个答案:

答案 0 :(得分:0)

将更改放在UIView动画块中:

    [UIView animateWithDuration:0.5 animations:^(void) {
        self.navigationItem.leftBarButtonItem = leftButton;
    }];

然后你可以修改动画的速度。