我正在尝试以平滑的幻灯片类型动画从 UIViewController 顶部的起始位置移动 UILabel,以便在视图加载时它从顶部向下滑动,然后在任何位置停止大约 10 秒。10 秒后,我想再次滑出视图。
-(void) animateInstructionLabel
{
float newX = 50.0f;
float newY = 100.0f;
[UIView transitionWithView:self.lblInstruction
duration:10.0f
options:UIViewAnimationCurveEaseInOut
animations:^(void) {
lblInstruction.center = CGPointMake(newX, newY);
}
completion:^(BOOL finished) {
// Do nothing
}];
}
但我不知道如何做 10 秒的延迟,然后在上面的方法中返回。最终结果是我希望这是一个看起来像通知的标签,然后再次移出屏幕。
有人能帮我把上面描述的这些部分放在一起吗?
编辑
我根据以下答案添加此内容:
-(void) animateInstructionLabel
{
float newX = lblInstruction.frame.origin.x;
float newY = 20.0f;
lblInstruction.center = CGPointMake(lblInstruction.frame.origin.x, -20.0f);
lblInstruction.bounds = CGRectMake(lblInstruction.frame.origin.x, -20.0f, 650.0f, 40.0f);
[UIView animateWithDuration:3.0f
delay:0
options:UIViewAnimationCurveEaseInOut
animations:^(void) {
lblInstruction.center = CGPointMake(newX, newY);
}
completion:^(BOOL finished) {
[UIView animateWithDuration:5.0f
delay:5.0
options:UIViewAnimationCurveEaseInOut
animations:^(void) {
lblInstruction.center = CGPointMake(newX, -20);
}
completion:^(BOOL finished) {
// Do nothing
}
];
}
];
}
但是,即使我在动画开始之前将 label.center 设置在屏幕之外,我还是看到它从视图控制器的左上角移动到了视图控制器的中心。它没有保持动画开始之前应该设置的 x 位置。