[解決済み] UIViewのシェイクアニメーション
2023-05-30 08:59:10
質問
ボタンが押されたときにUIViewが揺れるようにしたいのですが、どうすればよいでしょうか。
私は、私が見つけたコードを適応しています http://www.cimgf.com/2008/02/27/core-animation-tutorial-window-shake-effect/ .
しかし、以下のコードをUIViewを振るために適応させようとすると、うまくいきません。
- (void)animate {
const int numberOfShakes = 8;
const float durationOfShake = 0.5f;
const float vigourOfShake = 0.1f;
CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animation];
CGRect frame = lockView.frame;
CGMutablePathRef shakePath = CGPathCreateMutable();
CGPathMoveToPoint(shakePath, NULL, CGRectGetMinX(frame), CGRectGetMinY(frame));
for (int index = 0; index < numberOfShakes; ++index) {
CGPathAddLineToPoint(shakePath, NULL, CGRectGetMinX(frame) - frame.size.width * vigourOfShake, CGRectGetMinY(frame));
CGPathAddLineToPoint(shakePath, NULL, CGRectGetMinX(frame) + frame.size.width * vigourOfShake, CGRectGetMinY(frame));
}
CGPathCloseSubpath(shakePath);
shakeAnimation.path = shakePath;
shakeAnimation.duration = durationOfShake;
[lockView.layer addAnimation:shakeAnimation forKey:@"frameOrigin"];
}
どのように解決するのですか?
その投稿を書いたのは私です。UIView には過剰であり、さらにパラメーターは OSX アプリ向けです。代わりにこれを実行します。
CABasicAnimation *animation =
[CABasicAnimation animationWithKeyPath:@"position"];
[animation setDuration:0.05];
[animation setRepeatCount:8];
[animation setAutoreverses:YES];
[animation setFromValue:[NSValue valueWithCGPoint:
CGPointMake([lockView center].x - 20.0f, [lockView center].y)]];
[animation setToValue:[NSValue valueWithCGPoint:
CGPointMake([lockView center].x + 20.0f, [lockView center].y)]];
[[lockView layer] addAnimation:animation forKey:@"position"];
durationとrepeatCountパラメータ、そしてfromとtoの値で中心からのx距離で遊ぶ必要がありますが、これはあなたが必要とするものを与えてくれるはずです。お役に立てれば幸いです。何か質問があれば、私に知らせてください。
---
Swift 3.0
let midX = lockView.center.x
let midY = lockView.center.y
let animation = CABasicAnimation(keyPath: "position")
animation.duration = 0.06
animation.repeatCount = 4
animation.autoreverses = true
animation.fromValue = CGPoint(x: midX - 10, y: midY)
animation.toValue = CGPoint(x: midX + 10, y: midY)
layer.add(animation, forKey: "position")
関連
-
[解決済み] jQueryを使って「Please Wait, Loading...」というアニメーションを作成するにはどうすればよいですか?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] アンドロイド アニメーションの拡大・縮小
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] UIViewの下に影を描くには?
-
[解決済み] [Solved] UIViewのアニメーションをキャンセルする?
-
[解決済み】UIView 無限360度回転アニメーション?
-
[解決済み] iPhone UIViewアニメーションのベストプラクティス
最新
-
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のエラー、アーキテクチャx86_64の未定義シンボルについて
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] swiftで電子メールアドレスを検証する方法は?