【发布时间】:2014-09-23 00:34:14
【问题描述】:
可能很多开发者都出现过这类问题,我也尝试在谷歌上找到,但没有解决我的问题。
在我的应用程序rootViewController 中动态设置窗口,我的意思是用户可以在运行时应用程序更改根视图。所以首先我从UIWindow 中删除当前的rootViewController,然后在UIWindow 上设置新的rootViewController 并使用特定的动画。
此动画由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];
}
我也尝试设置UIWindow.的背景clearColor和whiteColor,但不起作用。
我的问题是:虽然动画正在处理(从右到左),但我得到了黑色阴影。所以有人可以帮我隐藏这个黑影吗?请给你黄金建议。
谢谢。
【问题讨论】:
-
请出示您用来制作动画的代码。
-
将动画持续时间设置为 0。
[animation setDuration:0.0];我知道这不是更好的方法,但我们无法移除那个黑色阴影。 -
其他关于根视图控制器动画的问题/答案似乎使用了不同的方法。你试过那些吗? stackoverflow.com/questions/8053832/…
-
@YogeshSuthar - 那我该如何展示我的动画??
-
@Droppy - 我检查了它,但没有像从右向左推这样的动画。都是关于翻转或淡入淡出:(
标签: ios objective-c cocoa-touch catransition