Возможно, подобные проблемы возникли со многими разработчиками, я также попытался найти в Google, но не удастся решить мою проблему.
В моем приложении rootViewController
динамически устанавливается динамическое окно, я имею в виду, что пользователь может изменить вид корня во время выполнения приложения. Поэтому сначала я удаляю текущий rootViewController
из UIWindow
, а затем устанавливаю новый rootViewController
на UIWindow
с определенной анимацией.
Эта анимация сделана CATransition
с помощью transition.type = kCATransitionPush;
.
Мое приложение работает очень хорошо, кроме анимации нового rootViewController
. Как и выше, я сказал, что использовал kCATransitionPush
с CATransition
Редакция: Ниже мой код:
-(void) changeRootViewController
{
for(UIView *subViews in self.window.rootViewController.view.subviews)
[subViews removeFromSuperview];
[self.window.rootViewController.view removeFromSuperview];
self.window.rootViewController.view = nil;
[self.window.rootViewController removeFromParentViewController];
MainRootViewController *mainRootVC = [[MainRootViewController alloc] init];
CATransition *animation = [CATransition animation];
[animation setDuration:0.4];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
animation.fillMode = kCAFillModeForwards;
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
self.window.rootViewController = mainRootVC;
[[self.window layer] addAnimation:animation forKey:nil];
}
Я также попытался установить clearColor
и whiteColor
фона UIWindow.
Но не работает.
Моя проблема: Пока процесс анимации (справа налево), я получаю черную тень. Так кто-нибудь может помочь мне скрыть эту черную тень? Пожалуйста, дайте вам золотое предложение.
Спасибо.