Как мне выполнить эти переходы анимированных представлений? - PullRequest
1 голос
/ 24 сентября 2011

Я новичок в Core Animation, и мне нужно знать, как сделать 2 анимации:

  1. Мне нужно переключать XIB, постепенно исчезая в черном (полностью выпуская первый контроллер вида)
  2. Мне нужно имитировать анимацию pushViewController UINavigationController (переключение XIB и освобождение первого контроллера представления)

Как вы можете добиться этих переходов анимированного представления?

1 Ответ

1 голос
/ 26 октября 2011

Я сделал обе эти анимации, но, возможно, не совсем так, как вы ищете.

  1. Fade View в черном цвете, я выбрал другой способ, вместо этого добавил новый подпредставление, которое охватывает все окно, которое было черным и анимированным Альфа от 0,0 до 1,0. Сделано для хорошего эффекта.

    [UIView animateWithDuration: 0,5 анимации: ^ {_easterEgg.alpha = 1.0; } завершение: ^ (BOOL закончено) {[self animateIndex: 0]; }];

  2. Слайд в виде, подобном UINavigationController. Я не делал это точно так же, как UINavigationController, поскольку он выполняет несколько анимаций, но у меня был новый вид, который сдвигал предыдущий вид за пределы экрана. Этот код устанавливает рамку нового экрана за пределами экрана справа от текущего вида, создает местоположение кадра за пределами экрана слева и захватывает текущий видимый кадр. Наконец, он просто анимирует новый вид из-за экрана прямо в видимый кадр, а старый вид из видимого кадра - влево. Затем удаляет старый вид.

    CGRect offRight = CGRectMake (_contentView.frame.size.width, 0, _contentView.frame.size.width, _contentView.frame.size.height);

    CGRect offLeft = CGRectMake (-_ contentView.frame.size.width, 0, _contentView.frame.size.width, _contentView.frame.size.height);

    CGRect visibleFrame = CGRectMake (0, 0, _contentView.frame.size.width, _contentView.frame.size.height);

    [просмотр setFrame: offRight]; UIView * currentView = [[_contentView subviews] lastObject]; [_contentView addSubview: view];

    [UIView animateWithDuration: 0,5 анимации: ^ { [currentView setFrame: offLeft]; [view setFrame: visibleFrame]; } завершение: ^ (BOOL закончено) { [currentView removeFromSuperview]; }];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...