私はiOSアプリケーションに取り組んでいます。ホイールを作成する必要があります。このホイールでは、アプリケーションがサーバーからホイールイメージを取得し、ユーザーはボタンを押して回転させます。
入力はホイールイメージと特定の角度です。私はその角度でホイールを停止する必要があります!
それに加えて、車輪は回転しながら速度を持っている必要があります。
アイデアや解決策がある場合は、私に知らせてください。
ありがとうございました!このビューを作成するios - ホイールの特定の角度で停止する
答えて
は(UIView
のプロパティである)は、クリップサブビュー正方形UIView
を有することが最も簡単であり、コーナー半径(層view.layer.cornerRadius
のプロパティ)は半画幅(または高さ)に設定されています。このビューでは、画像が表示された画像ビューを追加します。
ビューを回転するには、単にview.transform = CGAffineTransform(rotationAngle: angleInRadians)
のような変換を使用します。このプロパティはアニメーション可能なので、UIView.animate...
メソッドを使用して回転をアニメートできます。この場合、アニメーションブロック内の変換をターゲット角度に設定するだけで、ビューが正しく回転してアニメーション化されます。また、カーブが緩やかに始まり、ゆっくりとホイールをスタートさせ、加速した後、減速して停止するオプションを追加することもできます。
あなたの車輪がある角度で停止する前にいくつかの円を描いている場合は、UIView
のアニメーションは少し不適切かもしれません。その場合、私は1.0/60.0
の間隔で繰り返しタイマーを作成し、60FPSをトリガーします。あなたの車が起動すると、あなたは、開始日を救う:
startDate = Date()
と終了日:また、開始角度を保存する必要が
endDate = startDate.addingTimeInterval(expectedDuration)
:
startAngle = currentAngle
と終了角のように:
endAngle = CGFloat(Int(currentAngle/(CGFloat.pi*2))*(CGFloat.pi*2)) + // This will roughly return how many circles have currently pass
CGFloat.pi*(numberOfFullCircles*2) + // Add full circles
angleToStopAtInRadians // Add the destination angle
いつでもビューの変換をターゲット回転に更新する必要があります。それは、(例えばイーズアウト)
currentAngle = startAngle + (endAngle-startAngle)*scale // Use this in the rotation matrix
非線形を使用するには:
let absoluteScale = endDate.timeIntervalSince(Date())/endDate.timeIntervalSince(startDate)
let scale = CGFloat(max(0.0, min(absoluteScale, 1.0)))
その後、我々は、線形補間を使用する必要があります:あなたは、アニメーションで使用すると、現在、現在の時刻に応じている場所を見つける必要がありますスケールを変更するのが最善です。簡単にするために、たとえばscale = pow(scale, 1.0/1.3)
を使用します。もっと興味深いアルゴリズムを見つけたり作成したりして、これらの値を使いこなすことができます。
最後に、absoluteScale
:if absoluteScale >= 1.0
ですでに書き込まれているアニメーションが終了したら、タイマーを停止してから、アニメーションが完了し、タイマーを無効にして、その後に実行する必要があるものをトリガーする必要があります。
これを楽しんでください。困ったときは、新しい質問をいくつかの詳細とコードとともに投稿してください。
- 1. 角度停止ルータNavigationStart
- 2. 特定の時刻にiOSローカル通知を停止する
- 3. 角度停止イベントの伝播
- 4. シェーダが特定の角度でレンダリングを停止するのはなぜですか?
- 5. 特定のjQueryアニメーションを停止する
- 6. 角度2(特定の角度2.1.0)のパターンでルーティングするエラー
- 7. 角度/ cssで画像の自動回転を停止する
- 8. 関数が戻るまでのリダイレクトの停止(角度/ HTML)
- 9. 角度2 - 停止NgClass常に更新
- 10. 特定のCMTimeでAVPlayerを一時停止する
- 11. ExecutorServiceから特定のスレッドを停止/一時停止できますか?
- 12. 角度jsファイルで選択したオプションのイベントpropgationを停止
- 13. GIT&Laravel停止特定のファイル
- 14. RDS停止原因の特定
- 15. 角度でJSONの特定の値JS
- 16. ページ上の特定の位置でアニメーションを停止する[jQuery]
- 17. メソッドの特定のポイントでコードを停止する
- 18. SVGリニアグラジエント停止オフセットの角度2値をバインドしますか?
- 19. 角度ルータのリンクが「停止」していますか?
- 20. 角度CLIアプリケーションで特定の成分
- 21. "autoplay muted playsinline"のiOS 10ビデオタグは、バックグラウンドミュージックを停止します(特定)
- 22. 角度を変えたときにビデオを停止する
- 23. 特定のAjaxレスポンスでタイマーを停止する
- 24. Flash AS3特定のフレームでサウンドを停止する
- 25. jQueryプラグインを特定のページで停止する方法は?
- 26. 特定のdivでスクロールを停止する
- 27. 特定の条件でコードが停止する
- 28. オブジェクトを回転させて特定の点で停止する
- 29. VBScriptで特定のスクリプトを停止する方法
- 30. 特定の位置でUIScrollViewを停止する
これまでに何を試してみましたか、正確に何が問題になっていますか? –
あなたのコードを質問に追加して、あなたがどこにいるのか正確に説明してください。 –
私はこのリンクを助けると思う=> https://www.cocoacontrols.com/controls/jswheelview – Jay