Я хочу сделать пользовательский переход между контроллерами представления, слайд слева направо, как базовый эффект перехода iOS между страницами в AppLaucher, но с затемнением.
У меня есть собственный переход между viewControllers (назовем их FirstVC и SecondVC). Для затемнения у меня есть черный вид, который исчезает во время анимации (Второй VC темнее, чем Первый VC). У меня есть класс — подкласс UIStoryboardSegue — для моего пользовательского перехода с реализованным методом -(void)perform
. В этом методе я реализовал (более подробно):
//...Initials frames
UIView *blackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
blackView.backgroundColor = [UIColor blackColor];
blackView.alpha = 0;
[UIView animateWithDuration:0.3 animations:^{
blackView.alpha = 0.5;
//...Animations
}
completion:^(BOOL finished){
}];
Я уточняю, что два контроллера представления находятся в двух разных контроллерах представления навигации.
Для затемнения я хотел бы изменить свойство «darkView», объявленное в классе SecondVC, когда переход завершен, чтобы сохранить затемнение после перехода.
Для этого я хотел бы сделать один из следующих вариантов (если один из них работает, другие мне не нужны):
Доступ к свойству darkView SecondVC непосредственно в блоке завершения и его изменение
Обнаружение завершения анимации и изменение свойства в этот момент в методе, реализованном в классе SecondVC.
Напишите
[dest.view addSubview:whiteView];
в блоке завершения ("dest" является целевым контроллером представления) и получите доступ к ЭТОМУ подпредставлению в другом методе SecondVC.
Я уже многое перепробовал для трех решений, но буду очень признателен за вашу помощь. Спасибо