【发布时间】:2013-05-23 17:29:30
【问题描述】:
我试图移动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 中设置动画(而是直接跳到末尾)。
是否可以使用延迟动画在类似属性上创建动画序列?我需要将其扩展到任意数量的动画,具体取决于用户输入。
【问题讨论】:
标签: ios uiview uiviewanimation