1

3 つの異なる速度で 3 つのラベルのアニメーションを実行したいと考えています。label1 with a duration of1.0 秒。label2 with a duration of2.5 秒。label3 with a duration of5.0 秒。

「setAnimationDuration」メソッドを試しましたが、うまくいきませんでした。私がどこで間違っているのか、誰にもわかりますか?

編集: 完全なシナリオ: スクロールビューがあります。右から左にスワイプすると、スクロールビューの各ページの背景画像が異なるため、背景画像が変化します。スクロールすると、ラベルもアニメーションを開始し、次のページから開始しているように見え、スクロールが完了すると、特定の位置で停止します。現在のオフセットに基づいてアニメーションを実行しています。

コード:

- (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 が機能していないことです。

4

3 に答える 3

0

次のように、毎秒呼び出されるメソッドで投稿したコードを呼び出してみてください。

NSTimer *t = [[NSTimer alloc] initWithFireDate:nil interval:1.0 target:self selector:@selector(yourmethod) userInfo:nil repeats:YES];
于 2012-11-24T07:17:13.120 に答える
0

このコードを試してください。

[UIView animateWithDuration:1.0
                      delay:1.0
                    options:UIViewAnimationOptionTransitionNone
                 animations:^{
                      label3.frame = CGRectMake(2048-currentoffset+ 100, Y+20, Width, Height);
                 }
                 completion:^(BOOL completed) {

                 }
];
于 2012-11-24T07:54:15.653 に答える
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);
        }];
    }
}
于 2012-11-24T17:18:06.043 に答える