-5
A
答えて
1
あなたが拡張機能を作成するか、またはほとんどない任意のビューを振るために、以下の機能に少し変更を加えないビューを振るために、この機能
public func shakeView() {
let shake: CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "transform")
shake.values = [NSValue(caTransform3D: CATransform3DMakeTranslation(-5.0, 0.0, 0.0)), NSValue(caTransform3D: CATransform3DMakeTranslation(5.0, 0.0, 0.0))]
shake.autoreverses = true
shake.repeatCount = 2.0
shake.duration = 0.07
self.layer.add(shake, forKey:"shake")
}
で任意のビューを振ることができます。
0
CABasicAnimation
で振りアニメーションを適用できます。
例:
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
shakeAnimation()
}
func shakeAnimation() {
let animation = CABasicAnimation(keyPath: "position")
animation.duration = 0.3
animation.repeatCount = 10
animation.autoreverses = true
animation.fromValue = NSValue(cgPoint: CGPoint(x: self.view.center.x - 10, y: self.view.center.y))
animation.toValue = NSValue(cgPoint: CGPoint(x: self.view.center.x + 10, y: self.view.center.y))
self.view.layer.add(animation, forKey: "position")
}
}
結果:
0
は、いくつかの時間前にそれのためのビューを書きました。 、インターフェイスビルダーでその中にすべてのものを置きIBOutletとしてビューをリンクし、呼び出す:
shakeItView.shake(completion: { _ in })
コード私のコンポーネントのために:
public final class ShakeItView: UIView {
public func shake(completion: @escaping (Bool) ->()) {
UIView.animate(withDuration: 0.07 - TimeInterval(count) * 0.01, delay: 0.01, options: .curveEaseInOut, animations: { [unowned self] in
self.transform = CGAffineTransform.init(translationX: CGFloat(10 * self.direction), y: 0)
}) { [unowned self] _ in
if self.count >= 4 {
self.transform = CGAffineTransform.identity
self.resetValues()
completion(true)
} else {
self.count += 1
self.direction *= -1
self.shake(completion: completion)
}
}
}
private var direction: Int = 1
private var count: Int = 0
private func resetValues() {
direction = 1
count = 0
}
}
関連する問題
- 1. iOS App - プロビジョニングプロファイルの作成に失敗しました
- 2. ビルド失敗Oozieディストリビューションの作成に失敗しました
- 3. プロビジョニングプロファイルiOSの作成に失敗しました - 無料のプロフィールのため
- 4. テーブル作成に失敗しました
- 5. Xamarin IOSアプリが失敗しました
- 6. TestNGレポートの作成方法ソフトアサーションが失敗した行を表示する
- 7. アップルウォレットクーポンの例作成失敗
- 8. iOS FMDBマルチスレッド操作の失敗
- 9. SDK 5.4.0.GAがiOSアプリケーションの作成に失敗する
- 10. SonarQube - 作業パスの作成に失敗しました:
- 11. 作者がgit repoのクローン作成に失敗しました
- 12. ドッカーマシン作成失敗gcp
- 13. アンドロイド作成ADT15失敗
- 14. iOS Buildは認証のために失敗しましたが、ウィザードで作成されました
- 15. エラー:タスク ':app:validateSigningDebug'の実行に失敗しました。 > com.android.ide.common.signing.KeytoolException:キーストアの作成に失敗しました
- 16. 新しいファイル(Python)の作成に失敗しました
- 17. コアデータ:新しいオブジェクトの作成に失敗しました
- 18. お客様のプロフィールの作成に失敗しました。エラー
- 19. スパークのハイブ:スパーククライアントの作成に失敗しました
- 20. 動的TextMergeセグメントのキャンペーンの作成に失敗しました
- 21. HIVEのInputInitializerManagerエラーTEZの作成に失敗しました
- 22. openbabelのエラー:openbabelの作成に失敗しました
- 23. sonarタイプのタスクの作成に失敗しました
- 24. Azureサービスバストピックのサブスクリプションの作成に失敗しました
- 25. anacondaのインストール - 「anacondaメニューの作成に失敗しました」
- 26. はSessionFactoryのオブジェクトの作成に失敗しました:java.lang.IllegalStateException HQL
- 27. Ionic Build iOS - 失敗
- 28. ImageMagick:ERROR:宝石ネイティブエクステンションの作成に失敗しました
- 29. 0x80004005インスタンスの作成に失敗しました
- 30. Android VOIP SipException:SipSessionの作成に失敗しました
コードを追加します。.. –
スクリーンショット、あなたのコードではなく追加してください、しかし、あなたの質問に貼り付けることによって。 – rckoenes