这就是我想要完成的事情。
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");
}];
}];
答案 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");
}];
}
}];