問題タブ [uikit-dynamics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
327 参照

ios - UISnapBehavior ポイントの更新

私のアプリには、ドラッグして移動できる小さなビューがあります。ユーザーが小さなビューの 1 つをドラッグし始めると、その場所にとどまりますが、一定の距離 (~200 ポイント) だけ「引き伸ばされ」ます。距離を超えた後、小さなビューはユーザーの指に「スナップ」効果を実行する必要があります。アニメーション全体は、輪ゴムが壊れていると最もよく説明されています。

これまでのところ、次のようにスナップ効果を実装しました。

問題は、スナップ アニメーションの実行中にユーザーが指を動かし続けると、エフェクトが開始されたときに指があったポイントに向かってビューが移動し続けることです。

タッチが移動したときに UISnapBehavior の宛先を更新する方法はありますか?

0 投票する
0 に答える
315 参照

ios - UIKit ダイナミクス ポップ モーダル ビュー コントロール

UIKit Dynamics を含むカスタム Segue を備えたモーダル View Controller を提示したいと思います。

この投稿https://stackoverflow.com/a/23039173/1016102で rdelmar によって次のコードをコピーし、必要に応じて変更しようとしました。

悲しいことに、目的のコントローラーが間違った位置に表示され、衝突の直後に消えてしまいます。

次のスケッチのように、何らかの結果を達成したいと思います。

コントローラーが下から飛び出し、上に余裕を持ってスナップする必要があります。 上から 3/4 スペースとしましょう。

実際、私の UI は次のように動作しています。カスタム セグエを起動する「+」ボタンをタップすると、オレンジ色の NavigationBar のすぐ下にブラック ボックスが表示されます。スケッチのようにオレンジ色のボックスの下の境界線からはみ出ません。それはただ現れては消えていきます。

これを達成するには何を編集すればよいですか?

0 投票する
0 に答える
48 参照

ios - UIGravityBehaviour のメソッドにアクセスできません

WWDC Video Advanced Techniques with UIKit Dynamicsを見ていました。を使用してカスタマイズされたトランジションを作成する方法を説明してみましたUIDynamics。が作成されると、UIGravityBehaviorアクセスできないメソッドも使用されます (2 行目):

のランタイム ヘッダーを確認できるGithubプロジェクトも見つけましたUIGravityBehavior。そこにメソッドが用意されています。メソッドがビデオ内で呼び出される理由がわかりません。これは、アプリが実行されているときに何が起こるかの単なる説明delegateですか、それともアクセスするには特定のものを実装する必要がありますか?

0 投票する
1 に答える
74 参照

ios - Interface Builder を使用する場合の UIKitDynamics

UIKitDynamics を使用していくつかのボタンにアニメーションを追加したいのですが、UISnapBehaviour で非常に基本的なことを行うことはまったく機能しません。IB を使用してすべてのサブビューをレイアウトしているため、self.button.frame を呼び出しても再配置できないことに注意してください。制約を使用する必要があります。

そうは言っても、私が持っているものは次のとおりです...アニメーションを実行すると、すばやく点滅し、ひどく見えます。

0 投票する
1 に答える
780 参照

ios - UIKitダイナミクス回転画像

オブジェクトを 1 つのコーナーでホールドして持ち上げてドロップするようなアニメーション効果を実現する方法。例: ボックスを 1 つの角を持って床から持ち上げると、ボックスの最下層はある角度に傾きます。また、床に戻すときに適用する必要がある場合も同様です。

ここに画像の説明を入力

タッチ領域に基づいて画像にアンカーポイントを追加し、次に何をすべきかをストックしています。

これを達成するために、回答/提案をいただければ幸いです。

0 投票する
1 に答える
141 参照

ios - UIKit ダイナミクスでの CGGeometry 計算

UiKit ダイナミクスの実装を使用した単純なゲームがあります。ゲームには、下の図に示すように、ブロック (赤の部分) がグリッドに沿って配置されています。ブロックは上から落ち、下のグリッドに残ります。

ここに画像の説明を入力

一番下のグリッド行が参照 1 で呼び出されたとします。ブロックがどのグリッド参照にあるかを確認したいのです。CGGeomentry、CGRectContainsPoint([グリッド フレーム]) を使用してこれを行ってから、ブロックに 1 というグリッド番号を割り当てます。上の写真で使用しているように、単一のブロックに対しては正常に機能します。

次に2枚目の写真を見てください。

ここに画像の説明を入力

2 番目のブロックが 1 番目のブロックの上に積み上げられると、グリッド行 2 と 2 番目のブロックとの間のクリアランスに気付くことができます。このクリアランスは、より多くのブロックが積み重ねられると増加します。このクリアランスが原因で、CGRectContainsPoint の計算で、6 を超えるグリッド行に対して間違ったグリッド番号が返されます。

つまり、最初のブロックにはグリッド行 1 を割り当て、2 番目のブロックにはグリッド行 2 を割り当てる必要があります。ブロック フレーム サイズとグリッド フレーム サイズは同じなので、これはブロック 10 またはブロック 100 に当てはまります。このクリアランスにより、いくつかのブロックの後、グリッドの割り当てが間違っているように見えます。つまり、ブロック 6 のグリッド番号が 5 になっています。

UIKit ダイナミクス重力動作を使用してブロックを上から落下させ、衝突動作を使用して衝突を決定しています。弾力性を減らすために、弾性プロパティを 0.0 に設定しました。

私の質問は、グリッド フレーム サイズとブロック フレーム サイズが同じであるのに、なぜこのクリアランスが得られるのかということです。それらは正確に適合するべきではありませんか?どうすればこのクリアランスを取り除くことができますか?

下の図のように、ブロックを積み重ねるとクリアランスが増えていることがわかります。 ここに画像の説明を入力

ありがとうございました

0 投票する
2 に答える
1669 参照

ios - iOS: UIDynamicAnimator updateItemUsingCurrentState が回転で機能しない

でビューの回転を手動で変更しようとしていますUIDynamicsが、更新後にビューの回転が常にリセットされます。ドキュメントによると、そのメソッドはアイテムUIDynamicAnimatorupdateItemUsingCurrentState:位置と回転を更新する必要がありますが、位置のみが更新されます。
正方形のビューが画面から落ち、タッチ後にタッチの位置に配置され、45 度に回転する短い例を作成しました。ただし、回転は発生しません (回転がほんの一瞬見られることがありますが、その後は再びリセットされます)。

(ここにすべてのコードを残して、新しく作成したプロジェクトにコピーして貼り付けることができるようにします。邪魔になるような無関係なコードが多すぎないことを願っています)

それで、私は何か間違ったことをしていますか?または、ビューの回転を明示的に変更することはできませんか?