难以链接两个 UIView 动画
Posted
技术标签:
【中文标题】难以链接两个 UIView 动画【英文标题】:Difficulty chaining two UIView animations 【发布时间】:2011-11-10 14:21:36 【问题描述】:这就是我想要完成的。
UILabel 将以 100% 的 alpha 显示在屏幕上,并使用 UIView 动画向上移动 80 点。一旦该动画结束,我希望它在淡出到 alpha 0 的同时继续高出 80 点。我希望这两个动画显示为一个无缝动画。
我想也许我可以用 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】:这应该可行。我看不出为什么不这样做。只是一个小补充,检查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");
];
];
【讨论】:
它不工作......它工作得很好,但它不是我正在寻找的无缝效果。它向上移动了 80 像素……停了一会儿,然后继续向上移动到最后的 80 像素并逐渐消失。我试图让它无缝而不像两个动画。 我对代码做了一个小的编辑。从第一个动画中删除了 myLabel.alpha = 1,因为在动画开始之前它已经设置为 1以上是关于难以链接两个 UIView 动画的主要内容,如果未能解决你的问题,请参考以下文章