我想以三种不同的速度执行三个标签的动画。
label1 with a duration of
1.0秒。
label2 with a duration of
2.5秒。
label3 with a duration of
5.0秒。
我试过" setAnimationDuration"方法,但它没有工作。 谁能告诉我,我做错了什么?
编辑: 完整场景: 我有一个scrollview。当我从右向左滑动时,背景图像正在改变,因为每个scrollview页面都有不同的背景图像。通过滚动,标签也可以开始动画,看起来它们从下一页开始,在完成滚动时,它们会停止到其特定位置。 我正在基于currentoffset执行动画。
代码:
- (void) scrollviewDidScroll:(UIScrollView *)scrollView{
if(currentOffset > 1024)
{
[UIView beginAnimation: nil context:nil];
[UIView setAnimationDuration: 1.0];
label1.frame = CGRectMake(2048-currentoffset+ 100, Y, Width, Height);
[UIView commitAnimation];
}
if(currentOffset > 1024)
{
[UIView beginAnimation: nil context:nil];
[UIView setAnimationDuration: 2.5];
label2.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
[UIView commitAnimation];
}
if(currentOffset > 1024)
{
[UIView beginAnimation: nil context:nil];
[UIView setAnimationDuration: 5.0];
label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
[UIView commitAnimation];
}
}
问题是setAnimationDuration无效。
答案 0 :(得分:0)
尝试调用您在每秒调用的方法中发布的代码,如下所示:
NSTimer *t = [[NSTimer alloc] initWithFireDate:nil interval:1.0 target:self selector:@selector(yourmethod) userInfo:nil repeats:YES];
答案 1 :(得分:0)
试试这段代码。
[UIView animateWithDuration:1.0
delay:1.0
options:UIViewAnimationOptionTransitionNone
animations:^{
label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
}
completion:^(BOOL completed) {
}
];
答案 2 :(得分:0)
试试这个:
- (void)scrollviewDidScroll:(UIScrollView *)scrollView {
if(currentOffset > 1024) {
[UIView animateWithDuration:1 animations:^{
label1.frame = CGRectMake(2048-currentoffset+ 100, Y, Width, Height);
}];
[UIView animateWithDuration:2.5 animations:^{
label2.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
}];
[UIView animateWithDuration:5 animations:^{
label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
}];
}
}