TabBar всегда анимируется влево при нажатии нового viewController

У меня есть приложение Tab Bar с контроллером навигации на одной вкладке.

Я хочу добавить новый контроллер представления, но анимировать его слева.

У меня есть это:

CATransition *transition = [CATransition animation];
transition.duration = 0.8;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
transition.delegate = self;        

controller.hidesBottomBarWhenPushed = YES;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:controller animated:YES];

Все выдвигается слева, за исключением панели вкладок, которая всегда выдвигается влево (на это также не влияет transition.duration).

Есть ли способ заставить табар скользить в том же направлении и со скоростью, что и остальная часть представления?

(Я также пытался использовать pushModalViewController, но вместо этого у него были различные графические сбои).


person Praveen    schedule 26.07.2011    source источник


Ответы (1)


Мне кажется, что вы пытаетесь анимировать только self.navigationController в своем коде; поскольку UITabBar находится за его пределами, кажется разумным, что он не анимируется так, как вам нравится (я думаю, что он анимируется только как последующий эффект анимации внутреннего представления, но вы не можете его контролировать).

Что я хотел бы сделать, так это получить доступ к view вашего UITabBarController и добавить анимацию к его CALayer (или исключительно к этому, вы можете попробовать разные возможности).

person sergio    schedule 26.07.2011
comment
Потрясающий. Я изменил его на [self.tabBarController.view.layer addAnimation:transition forKey:nil];, и это, похоже, помогло. Кажется очевидным задним числом. - person Praveen; 26.07.2011