19

プロジェクトに次のコードがあります。

- (void) fadeImageView {
    [UIView animateWithDuration:1.0f
                          delay:0
                        options:UIViewAnimationCurveEaseInOut
                     animations:^{
                         self.imageView.alpha = 0.0f;
                     }
                     completion:^(BOOL finished) {
                         //make the image view un-tappable.
                         //if the fade was canceled, set the alpha to 1.0
                     }];

}

ただし、イメージビューが非表示になる前にこの操作をキャンセルしたい場合があります。このアニメーションを途中でキャンセルする方法はありますか?

4

3 に答える 3

13

Apple ドキュメントから: このメソッドの使用は、iOS 4.0 以降ではお勧めできません。代わりに、 animateWithDuration:delay:options:animations:completion: メソッドを使用してアニメーションとアニメーション オプションを指定する必要があります。

[UIView animateWithDuration:1.f
                      delay:0
                    options:UIViewAnimationOptionBeginFromCurrentState
                 animations:^{
                     self.imageView.alpha = 0.0f;
} completion:NULL];
于 2014-02-03T12:11:56.327 に答える
11

まず、 UIViewAnimationOptionAllowUserInteraction をオプションに追加する必要があります..

- (void) fadeImageView {
    [UIView animateWithDuration:1.0f
                          delay:0
                        options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
                     animations:^{
                         self.imageView.alpha = 0.0f;
                     }
                     completion:^(BOOL finished) {
                         //make the image view un-tappable.
                         //if the fade was canceled, set the alpha to 1.0
                     }];

}

次に、このようなメソッドを作成します....

-(void)stopAnimation {
    [self.routeView.layer removeAllAnimations];
}

その後、.....を使用して上記のメソッドのアニメーション呼び出しを削除したい場合

[self performSelectorOnMainThread:@selector(stopAnimation) withObject:nil waitUntilDone:YES];

それがあなたを助けることを願っています

幸せなコーディング........!!!!!!!!!!!! :)

編集:

これについて私を案内してくれたuser1244109に感謝します。

UIViewAnimationOptionBeginFromCurrentStateiOS7 の場合、次のようなオプションをもう 1 つ追加する必要があります。

[UIView animateWithDuration:1.0f
                              delay:0
                            options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState
                         animations:^{
                             self.imageView.alpha = 0.0f;
                         }
                         completion:^(BOOL finished) {
                             //make the image view un-tappable.
                             //if the fade was canceled, set the alpha to 1.0
                         }];
于 2013-03-04T12:54:30.697 に答える
8

更新:Borut Tomazinからのこの回答https://stackoverflow.com/a/21527129/194309を好む

于 2013-01-28T22:16:30.457 に答える