iOS活动指标

时间:2016-01-23 17:27:36

标签: ios objective-c catransition

我尝试创建活动指示器,currentView将是静态的,nextView将从左到右,从右到左,从上到下,从下到上进行动画制作。

我编写了如下代码。我面临的问题是,我只获得了一个动画从上到下的动画,而不是所有四个动画。任何人都可以帮助我逐个运行所有四个动画,直到一个过程完成

statusImage = [UIImage imageNamed:@"image2.png"];
moveImage = [UIImage imageNamed:@"image1.png"];

currentView = [[UIImageView alloc]
                            initWithImage:statusImage];


nextView = [[UIImageView alloc]
                         initWithImage:moveImage];

//Add your custom activity indicator to your current view
[self.view addSubview:currentView];
[self.view addSubview:nextView];

CATransition *transition1 = [CATransition animation];
[transition1 setType:kCATransitionPush];
[transition1 setSubtype:kCATransitionFromLeft];
[transition1 setDuration:1];
[nextView.layer addAnimation:transition1 forKey:@"string1"];

CATransition *transition2 = [CATransition animation];
[transition2 setType:kCATransitionPush];
[transition2 setSubtype:kCATransitionFromRight];
[transition2 setDuration:1];
[nextView.layer addAnimation:transition2 forKey:@"string2"];

CATransition *transition3 = [CATransition animation];
[transition3 setType:kCATransitionPush];
[transition3 setSubtype:kCATransitionFromTop];
[transition3 setDuration:1];
[nextView.layer addAnimation:transition3 forKey:@"string3"];

CATransition *transition4 = [CATransition animation];
[transition4 setType:kCATransitionPush];
[transition4 setSubtype:kCATransitionFromBottom];
[transition4 setDuration:1];
[nextView.layer addAnimation:transition4 forKey:@"string4"];

1 个答案:

答案 0 :(得分:0)

  

任何人都可以帮我一个接一个地运行所有四个动画,直到一个过程完成

一个图层一次只能有一个过渡动画。没有必要为过渡动画提供密钥。密钥永远是kCATransition。你的string1等毫无意义;只需使用nil。而且,你的代码毫无意义;附加到图层的多个动画会导致这些动画同时执行 (如果可能),而不是连续执行

您需要链接动画。像这样设置你的代码:

  • 执行第一个动画,给它一个完成处理程序。第一个动画结束时调用此完成处理程序。

  • 在完成处理程序中,执行第二个动画,为其提供完成处理程序。第二个动画结束时,将调用此完成处理程序。

  • 在完成处理程序中,执行第三个动画,为其提供完成处理程序。第三个动画结束时调用此完成处理程序。

  • 在完成处理程序中,执行第四个动画。