Не могу сказать, есть ли у вас другие проблемы, связанные с контекстом, где этот код вызывается. Похоже, view1
является подклассом UIViewController. Вы должны переименовать это, довольно запутанно.
Я заметил проблему с вашими кадрами. Похоже, self
является контроллером представления контейнера, например, self.view
содержит анимируемые виды (view1.view
и myViewController.view
) и не должен быть анимирован сам. Если это правильно, ваша анимация должна быть:
[self.view addSubview:myViewController.view];
[myViewController.view setFrame:CGRectMake(320, 0, 320, 480)];
[UIView animateWithDuration:0.5
animations:^{
[view1.view setFrame:CGRectMake(-320, 0, 320, 480)];
[myViewController.view setFrame:CGRectMake(0, 0, 320, 480)];
}
completion:^(BOOL finished){
[view1.view removeFromSuperview];
}];
Кроме того, кажется странным, что контроллер представления оживляет себя из своего суперпредставления. Если self
является контроллером представления контейнера, я ожидаю, что логика будет там. См. Мой ответ на Анимированное изменение контроллеров представления без использования стека навигационных контроллеров, подпредставлений или модальных контроллеров? для примера того, как реализовать контроллер представления контейнера. Это просто изменить мой пример, чтобы сделать слайд в анимации, которую вы хотите.