4

私は使用しようとしています

[UIView animateWithDuration:1 delay:2 options:UIViewAnimationOptionCurveEaseIn animations:^{
} completion:^ (BOOL completed) {}         ];

ただし、遅延に何を入れても、遅延はありません。
別のボタンに触れると、一連のボタンが次々にフェードインしようとしています。そのため、さまざまな長さの遅延で一連の UIView animate を使用しますが、どのような時間遅延を入力しても、それらはすべて同時に表示されます。誰か提案はありますか?

4

3 に答える 3

18

まず、値animateWithDurationdelayfloat値であり、 と である必要があります1.02.0

意見:コードがViewDidLoadメソッドにある場合は、別の関数に移動してみてください

第二に、このコンテキストでそれを行うことができない場合は、別のコンテキストにジャンプするか、使用するなどして歩き回ってください

performSelector:withObject:afterDelay

もう 1 つの回避策は、delayを 0 に設定し、後続のUIViewアニメーション ブロックをcompletion前のanimateWithDurationステートメントのブロックに配置することです。

 [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut
                 animations:^(void) {
        //Leave it empty
                 }
                 completion:^(BOOL finished){

// Your code goes here
   [UIView animateWithDuration:1.0 delay:0.0 options:
   UIViewAnimationOptionCurveEaseIn animations:^{
        } completion:^ (BOOL completed) {}];
    }];

PS:一部のプロパティは、アニメーション ブロック内のテキストの設定など、アニメーション化がサポートされていないため、遅延が終了するとアニメーションが開始され、その変更はアニメーション化できないため、すぐにテキストが変更されます。

テキスト アニメーションの場合、必要なことを行うには、完了ブロックのテキストを次のように変更します。

[UIView animateWithDuration:1.0
                      delay:2.0
                    options: UIViewAnimationOptionTransitionCrossDissolve
                 animations:nil
                 completion:^{
                     lbl.text =  @"My text" ;
}];

また、でアニメーション化されてbackgroundColorませんUIView。代わりにbackgroundColor、ビューのlayer次のプロパティを使用します。

[[controller layer] setBackgroundColor:[[UIColor anyColor] CGColor]];
于 2014-02-04T08:50:23.130 に答える
1

実装する前にお読みください duration: 秒単位で測定されたアニメーションの合計時間。負の値または 0 を指定すると、変更はアニメーション化されずに行われます。delay : アニメーションを開始する前に待機する時間 (秒単位)。アニメーションをすぐに開始するには、値 0 を指定します。オプション

- 上記のパラメータの両方に float 値を使用します - 別のルーチンでアニメーション操作を定義すると氷になります &

ViewDidAppear/viewWillapear のように適切な場所と呼んでください。

Use function like this & set your UI Element properties like this:
 [UIView animateWithDuration:0.6
                          delay:0.3
                        options: UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         [self.view layoutIfNeeded];
                         [yourviews setTintColor:[UIColor whiteColor]];
                         self.view.backgroundColor = [UIColor greenColor];
                     }
                     completion:^(BOOL finished){

                         // You next action to perform after completion;
                     }];
}

ハッピーコーディング、お役に立てば幸いです。

于 2016-08-03T19:58:35.640 に答える