私はたくさんのSOのものとAppleの参考文献を検索しましたが、それでも私の問題を管理することができません。
私が持っているもの:
- 2
UIImageView
秒と2UIButton
秒が接続された画面 - 2種類のアニメーション:
- 各画像を次々にスケールアップしてからスケールダウンします。
viewDidLoad
- ボタンが押されると(それぞれの「内側」に隠されたカスタムボタン
UIImageView
)、適切なアニメーションがトリガーされますUIImageView
(両方ではなく、1つだけ)(スケールアップしてからダウンします)。 - iOS4 +用に書いているときに、ブロックベースのアニメーションを使用するように言われました。
- 各画像を次々にスケールアップしてからスケールダウンします。
必要なもの:
実行中のアニメーションをキャンセルするにはどうすればよいですか?最後の1つを除いて結局キャンセルすることができました...:/
これが私のコードスニペットです:
[UIImageView animateWithDuration:2.0
delay:0.1
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
isAnimating = YES;
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 0.5, 0.5);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 0.5, 0.5);
}
completion:^(BOOL finished){
if (!finished) return;
//block letter buttons
[self.bigLetterButton setUserInteractionEnabled:YES];
[self.smallLetterButton setUserInteractionEnabled:YES];
//NSLog(@"vieDidLoad animations finished");
}];
}];
}];
}];
smallLetter
UIImageView
(ボタンを介して)押すbigLetter
とアニメーションが正しくキャンセルされるため、どういうわけかが正しく機能していません...
編集:
私はこの解決策を使用しましたが、それでもスケールダウンに問題がありますsmallLetter
UIImageView
-まったくキャンセルしません...
解決策
EDIT2:次/前のメソッドの最初にこれを追加しました:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
問題が残る...:/アニメーションチェーン内の文字の最後のアニメーションを中断する方法がわからない