Я делаю пользовательский segue, который исчезает до черного цвета, сворачивает контроллер вида и затем исчезает до прозрачного. К сожалению, я не могу заставить это сделать это. Вот код:Анимация альфа на UIView не работает
- (void)perform {
UIView *overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [self.sourceViewController navigationController].view.frame.size.width, [self.sourceViewController navigationController].view.frame.size.height)];
[overlay setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.0]];
[[self.sourceViewController navigationController].view addSubview:overlay];
[UIView animateWithDuration:2.0 delay:0.0 options:(UIViewAnimationOptionCurveEaseIn) animations:^{
[overlay setAlpha:1.0];
}completion:^(BOOL finished) {
[[self.sourceViewController navigationController] pushViewController:[self destinationViewController] animated:NO];
[UIView animateWithDuration:2.0 delay:0.0 options:(UIViewAnimationOptionCurveEaseIn) animations:^{
[overlay setAlpha:0.0];
}completion:^(BOOL finished) {
[overlay removeFromSuperview];
NSLog(@"Done!");
}];
}];
}
Итак, что я сделал, это добавить UIView в контроллер навигации, который имеет черный фон и альфа 0. Тогда, я делаю анимацию, чтобы изменить альфа 1, нажмите контроллер точки назначения на контроллер навигации, а затем оставьте его назад, чтобы очистить. Когда я это делаю, ничего не происходит. Он просто отключает контроллер вида назначения на контроллер навигации без какой-либо анимации.
Странно, если я начинаю с альфы 1 и анимировать до 0, а затем обратно в 1, она работает (но это не то, что я хочу).
Я думаю, что есть какая-то оптимизация, которая исключает мой ясный UIView, и поэтому изменение прозрачности бессмысленно.
Это работает! Но почему?? –
@JonA, вы анимировали альфа на вид, а не цвет фона. Таким образом, вам необходимо установить цвет фона непрозрачным и начать с альфы на представлении как прозрачный. –
О, конечно. Сегодня не нужно стрелять по всем цилиндрам. Благодарим вас за продолжение. –