0

質問は実際にそれをすべて説明しています。

このコードを使用して、アニメーション化された現在のビューの上にカスタム UIView をロードします。

- (void)showView
{
    self.blurView.alpha = 0.f;

    [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^
     {
         self.blurView.alpha = 1.f;
     } completion:^(BOOL finished) {
         [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^
          {
              self.blurView.alpha = 0.f;
          } completion:nil];
     }];
}

動作しますが、アニメーション中に-(void)showView を再度実行すると、カスタム ビューが画面から削除されません。

それはちょうどこのようにとどまります:

ここに画像の説明を入力

4

3 に答える 3

1

私は問題が何であるかを理解しました。

blurViewはパブリック変数であり、毎回-(void)showView同じ変数を使用し、アルファを 0.f に一度だけ設定して、最初のショーのアルファを決して変更しませんでした。

blurViewメソッド自体で変数を宣言しましたが、すべてblurViewが独自のポインターを取得するため、機能するようになりました。

-(void)someMethod
{
    //Create a live blur view
    FXBlurView *blurView = [[FXBlurView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    blurView.center = CGPointMake(self.view.window.frame.size.width / 2, self.view.window.frame.size.height / 2);
    blurView.layer.cornerRadius = 20.f;
    [self.view.window addSubview:blurView];

    [self showView:(blurView)];
}

- (void)showView:(FXBlurView *)blurView
{
    //Make full transparent before showing
    blurView.alpha = 0.f;

    //Start animation
    [FXBlurView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^
     {
         blurView.alpha = 1.f;
     } completion:^(BOOL finished) {
         if (finished)
         {
             //End animation
             [FXBlurView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^
              {
                  blurView.alpha = 0.f;
              } completion:nil];
         }
     }];
}
于 2013-09-24T20:00:21.890 に答える
0

関数の先頭に次の行を追加する必要があります。

[self.view.layer removeAllAnimations];

アクティブなアニメーションをすべて削除します。

于 2013-09-23T20:35:41.027 に答える
0

遅延を実装しているため、動作しません。遅延のあるアニメーション ブロックを使用してください。上記のこの関数で削除できるアニメーション キーが作成されます。

[UIView animateWithDuration:0.3 delay:0.0
                    options:UIViewAnimationOptionAllowUserInteraction
                 animations:^
 {
     // ...
 } completion:NULL];
于 2013-09-24T05:52:04.507 に答える