我试图移动UILabel
两次,但我的行为很奇怪。这是我的第一个动画:
- (IBAction)doAnimation:(id)sender
{
CGRect labelFrame = self.label.frame;
CGRect newFrame = CGRectMake((random() / (float)RAND_MAX) * self.view.frame.size.width,
(random() / (float)RAND_MAX) * self.view.frame.size.height,
labelFrame.size.width,
labelFrame.size.height);
[UIView animateWithDuration:2
delay:0
options:0
animations:^{
self.label.frame = newFrame;
}
completion:NULL];
}
这完美地工作。标签在移动到位时淡入。
然后我通过在末尾添加此代码添加了第二个延迟动画doAnimation:
CGRect newFrame2 = CGRectMake((random() / (float)RAND_MAX) * self.view.frame.size.width,
(random() / (float)RAND_MAX) * self.view.frame.size.height,
labelFrame.size.width,
labelFrame.size.height);
[UIView animateWithDuration:2
delay:3
options:0
animations:^{
self.label.frame = newFrame2;
}
completion:NULL];
在这种情况下,我得到了不同的行为。标签跳到第一个动画的结尾,等待延迟结束,然后为第二个移动设置动画。
出于好奇,我尝试为动画 1 中的两个属性设置动画。
animations:^{
self.label.frame = newFrame;
self.label.alpha = 1.0f;
}
alpha 动画正确,但帧更改没有。
如果我在动画 2 中添加 alpha 更改,则 alpha 不会在动画 1 中设置动画(而只是跳到末尾)。
是否可以使用延迟动画在类似属性上创建动画序列?我需要将其扩展到任意数量的动画,具体取决于用户输入。