У меня есть контроллер вида (наследуется от UIViewController
), который имеет пользовательскую логику для представления данных. Он может инициализировать новый контроллер вида (одного типа) и отображать его с помощью [self.navigationController pushViewController:next animated:NO]
(где следующий - новый экземпляр контроллера), создавая опыт «стека представлений», используя навигационную кнопку по умолчанию для перехода по умолчанию для навигации вверх по стеку.iOS: Настроить анимацию перехода на задний план
Теперь, перед вызовом pushViewController:animated:
Я могу настроить анимацию перехода, позвонив по номеру [self.navigationController.view.layer addAnimation:animation forKey:nil]
. Это прекрасно работает для «схода стека» взглядов.
Но так как навигация по стеку выполняется по умолчанию с помощью кнопки возврата по умолчанию, используемый переход - это по умолчанию слайд-левая анимация, которая не соответствует моей настроенной анимации.
Как настроить эту переходную анимацию?
EDIT:
Я взял идеи дали здесь и придумал:
UIBarButtonItem *back = [[UIBackButtonItem alloc] initWithTitle:@"\U000025C0\U0000FE0E" style:UIBarButtonItemStylePlain target:self action:@selector(back:)];
[self.navigationItem setLeftBarButtonItem:back]
И переход:
- (IBAction)back:(id)sender {
CATransiotion *animation = [CATransition animation];
animation.duration = 0.3f;
amimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
animation.type = kCATransitionMoveIn;
[self.navigationController.view.layer addAnimation:animation forKey:nil];
[self.navigationController popViewControllerAnimated:NO];
}
Единственным недостатком является появление новой кнопки возврата с которым я готов жить.
Спасибо за ответы :)
Я думаю, что пользовательская кнопка возврата - это путь, но я хочу сделать это в коде. Я новичок в Objective C, но насколько мне известно, это связано с созданием файлов .xib, которые я не использую. –