[解決済み] UIViewのブロックベースのアニメーションをキャンセルするには?
2023-04-04 07:27:16
質問
SO や Apple のリファレンスをたくさん探しましたが、私の問題を解決することができません。
私が持っているもの。
-
2つの
UIImageView
と2つのUIButton
が接続されている -
2種類のアニメーション
-
で一度だけ、各画像を次々に拡大・縮小する。
viewDidLoad
-
ボタンが押されたとき (それぞれの
UIImageView
の中に隠されたカスタムボタン) が押されると、適切なUIImageView
-のみ(スケールアップ、スケールダウンも可能)。 - 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
は適切にアニメーションをキャンセルするからです。
EDITです。
私はこの解決策を使用しましたが、まだスケールダウンに問題があります。
smallLetter
UIImageView
- が全くキャンセルされないという問題があります...
解決策
EDIT2です。 next/prevメソッドの冒頭に追加しました。
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
問題発生...:/ アニメーションチェーンにある文字の最後のアニメーションを中断させる方法がわからない
どのように解決するのですか?
を呼び出すことで、ビューのすべてのアニメーションを停止することができます。
[view.layer removeAllAnimations];
(view.layerのメソッドを呼び出すためにQuartzCoreフレームワークをインポートする必要があります)。
すべてのアニメーションではなく、特定のアニメーションを停止したい場合、最善の策は、UIViewアニメーションヘルパーメソッドではなく、明示的にCAAnimationsを使用することです、そうすれば、より細かい制御ができ、名前によって明示的にアニメーションを停止することができます。
Apple Core Animation のドキュメントはこちらで見ることができます。
関連
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] jQueryを使って「Please Wait, Loading...」というアニメーションを作成するにはどうすればよいですか?
-
[解決済み] [Solved] UIViewのアニメーションをキャンセルする?
-
[解決済み】UIView 無限360度回転アニメーション?
-
[解決済み] APNSの.pemファイルを作成する?
-
[解決済み] TabBarのタブビューにプログラムで切り替える?
-
[解決済み] UITableViewのセクション間のスペースを小さくする
-
[解決済み] Xcodeは私のiOSデバイスを見ませんが、iTunesは見ます。
-
[解決済み] UIScrollViewをコンテンツに合わせて自動サイズ調整する方法
-
[解決済み] iPhoneシミュレーターでカメラをテストするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 私のアプリケーションは「暗号を含む」のでしょうか?
-
[解決済み] iOSの配布証明書の正しい更新方法
-
[解決済み] Objective-CでENUMを定義して使用するにはどうすればよいですか?
-
[解決済み] iPhoneでウェブページからアプリがインストールされているかどうかを確認する方法
-
[解決済み] エラー : サービスは無効です
-
[解決済み] 静的ライブラリのObjective-Cカテゴリ
-
[解決済み] UIImageのアスペクト比と幅を維持したリサイズ
-
[解決済み] iOSアプリでターゲットのバージョン/ビルド番号をプログラム的に表示するには?
-
[解決済み] cocoaアプリケーションのinfo plistにある「bundle display name」と「bundle name」の違いは何ですか?
-
[解決済み] iPhoneでテキスト入力のポップアップダイアログボックスを表示する簡単な方法は?