Вы можете написать код анимации вручную.Вот общие шаги:
- Создайте подкласс
UIViewController
(по сути, контроллер dud для размещения вашего UITabBarController
) - я обычно называю это ShellViewController
. - Вметод
ShellViewController
init
(какой бы метод вы ни использовали), установите его frame
вне экрана справа, например, [self.view setFrame:CGRectMake(320, 0, 320, 480)];
- Создайте два метода в
ShellViewController
- (void)presentSelf
- (void)dismissSelf
- Создайте экземпляр
ShellViewController
, если вы хотите представить UITabBarController
- Поместите свой экземпляр
UITabBarController
внутри экземпляра ShellViewController
- . Вызовите
[currentView addSubview:shellViewController.view];
- Используйте приведенные выше пользовательские методы для представления и отклонения
ShellViewController
, в котором находится ваш UITabBarController
- Работа с управлением памятью в соответствии с вашей бизнес-логикой
Вот код для анимации (например, метод - (void)presentSelf
):
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.15]; //the double represents seconds
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[[self view] setFrame:CGRectMake(0, 0, 320, 480)];
[UIView commitAnimations];
Воткод для анимации (например, метод - (void)dismissSelf
):
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.15];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[[self view] setFrame:CGRectMake(320, 0, 320, 480)];
[UIView commitAnimations];
Имейте в виду, что эти методы анимации делают только that: animate.Они не отключают взаимодействие ни с текущим представлением, ни с представлениями / подпредставлениями ShellViewController
, которые анимируются.Вам нужно будет вручную отключить взаимодействие с пользователем во время анимации, а затем восстановить его после завершения анимации.Существует метод UIView
, который выполняет селектор после завершения анимации:
[UIView setAnimationDidStopSelector:@selector(enableUserInteraction)];
Вы можете поставить это сразу после [UIView setAnimationDelegate:self]
в каждом блоке анимации выше.Конечно, вам нужно было бы написать метод enableUserInteraction
самостоятельно ... и метод disableUserInteraction
в этом отношении.
Идти по этому пути хлопотно, но он работает.Как только вы написали ShellViewController
, это дает хороший многоразовый фрагмент.