1

いくつかのグラフィカル要素を消したい、背景画像を移動すると、新しいものが表示されます。問題は、背景の動きのアニメーションが完了する前に新しい背景の動きが表示される場合です。関連する質問で良い答えが見られなかったので、助けていただければ幸いです。擬似コード:

-(void)method1 {
[UIView animateWithDuration:0.6
                      delay:0.0 options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                     self.setThisOne.hidden = YES;
                     self.setThisAnother.hidden = YES;
                 }completion:^(BOOL finished) {
                     [UIView animateWithDuration:0.6
                                           delay:0.3
                                         options: UIViewAnimationOptionCurveEaseIn
                                      animations:^{ self.background.frame = myFrame; //Move background image
                                      } completion:^(BOOL finished){
                                          if (finished) {
                                              [self method2];
                                          }
                                      }
                      ];
                 }];

}

-(void)method2 {
    [UIView animateWithDuration:0.2
                      delay:0.3
                    options: UIViewAnimationOptionBeginFromCurrentState
                 animations:^{
                     self.aButtonsAppear.hidden = NO;
                     self.moreElementsApeear.hidden = NO
                 } completion:nil];

}

4

2 に答える 2

6

.hidden はアニメーション化できない可能性がありますが、.alpha はアニメーション化できます。可視性を制御するには、アニメーションで .alpha を使用します。

于 2013-06-06T13:47:30.343 に答える
0

おそらく解決策が見つかったと思いますが、完了ブロックで発生した小さな問題を次に示します。-animateWithDuration:animations:completion: メソッドを使用しましたが、アニメーションの流れを中断する別のアクションを実行していたと思われるため、完了が呼び出されませんでした。私の場合、同じアニメーションを何度も呼び出しています。完了ブロックには注意してください。私はまだ彼らに完全に依存しているわけではありません。

于 2013-12-25T21:03:11.217 に答える