难以链接两个UIView动画

时间:2011-11-10 14:21:37

标签: objective-c

这就是我想要完成的事情。

UILabel将以100%alpha显示在屏幕上,并使用UIView动画向上移动80pts。一旦动画结束,我希望它继续高80分,同时淡出到alpha 0.我希望这两个动画显示为一个无缝动画。

我想也许我可以用UIView动画做到这一点,然后在完成块中放入第二个UIView动画,如下所示。但是,在执行完成块之前似乎存在延迟,这会阻止两个动画无缝地出现。

有谁能告诉我做我想做的最好的方法?

谢谢!

[UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear animations:^{   
    myLabel.center = endPoint;

}
completion:^(BOOL finished) {
    [UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear animations:^{                
         myLabel.center = endPoint2;
         myLabel.alpha = 0;
        }
        completion:^(BOOL finished) {
             NSLog(@"animations complete");
     }];
 }];

1 个答案:

答案 0 :(得分:0)

这应该有效。我没有理由不这样做。只需添加一小部分,检查finished块中的动画完成情况。因为这将处理动画期间的任何错误。此外,如果您打算将此UILabel点击,那么您需要通过设置标记UIViewAnimationOptionAllowUserInteraction来实现此目标。

   [UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^{   
        myLabel.center = endPoint;
        myLabel.alpha = 1;
    }
    completion:^(BOOL finished) {
        if(finished){
        [UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^{                
             myLabel.center = endPoint2;
             myLabel.alpha = 0;
            }
            completion:^(BOOL finished) {
                 NSLog(@"animations complete");
         }];
        }
     }];