iPhone CATransition为任何动画的开始和结束添加了淡入淡出效果?

10 iphone

所以我刚开始为iphone开发一些简单的应用程序.我会说我相当肯定我对多个视图的编程没有很强的理解,但我正在努力学习.

我有一个程序,最初是一个基于普通窗口的应用程序,所以我可以手写一切,希望能够更多地了解我正在做的事情.我有一个视图控制器,用于根据每个其他视图控制器的请求加载和释放视图.没有元素从一个视图持续到另一个视图.

我目前工作正常,但我想在视图更改中添加动画.一个简单的推动画是我的目标.随着新观点的推进,一种观点推出.

看看CATransitions并尝试这个,我有一个工作版本(目前用于推动顶部/底部)

        [thisView.view removeFromSuperview];
        [thisView release];
        thisView = [[MenuViewController alloc] initWithNibName:@"MenuView" bundle:nil];
        [self.view addSubview:thisView.view];   

        CATransition *animation = [CATransition animation];
        [animation setDuration:6.3];
        [animation setType:kCATransitionPush];
        [animation setSubtype:kCATransitionFromTop];
        [animation setRemovedOnCompletion:YES];
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
        [[self.view layer] addAnimation:animation forKey:nil];
Run Code Online (Sandbox Code Playgroud)

据我所知,这是使用CATransition的非常标准的代码,它可以完成我需要的工作,一个视图在另一个视图进入时被推高.但是我的问题是,每个视图都会出现淡入淡出的情况.他们分别进来或出去看.

因此 - 在这个例子中; 当菜单从底部向上推时,它将从白色慢慢淡入,并且当前一个视图离开屏幕时,它将慢慢淡入白色.

请注意,持续时间设置为6,以便褪色是戏剧性的.

有没有办法消除这里的褪色,以便每个视图在进出的路上保持稳固?或者我在这条路线上完全错过了标记?

我感谢任何帮助.道歉我一直啰嗦.

Ian*_*nry 4

我一直无法找到解决这个问题的方法,但我可以提供一个合理的解决方法。发生的情况是它不是褪色为白色,而是褪色为透明,并且窗口背景(或后面的任何视图)是白色的。有几种方法可以解决这个问题:

  1. 更改窗口背景颜色。如果您要淡入淡出的两个视图具有相同的纯色背景色,那么这看起来会相当不错。

  2. 不要在每个视图(例如“MenuView”)中渲染背景,而是始终在这些视图下有一个共享背景视图。

请注意,这并非在所有情况下都有效——UITableView例如,分组总是完全不透明的。

(正如我附注的那样,我假设您没有构建基于导航的应用程序,在这种情况下,所有动画都应该自动处理。)

如果您还没有将其作为在视图之间转换的另一种方式,UIView您可能还需要考虑查看该方法(尽管它不能执行滑动动画,如果您已设置的话)。setAnimationTransition:forView:cache: