Handling Rotation Gestures
4602 ワード
https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/handling_uikit_gestures/handling_rotation_gestures
"Measure the relative rotation of two fingers on the screen, and use that motion to rotate your content."
スクリーン上の2つの指の相対回転を測定し、対応する動きを使用して内容を回転させます.
回転ジェスチャーは、画面上の2本の指を1回ずつ回転させるときに発生する連続ジェスチャーです.回転ジェスチャーを検出するには、
以下の方法の1つでジェス・チャーリー・コグニゼを実現することができる.コードの作成方法.ビューの インタフェースビルダーで実装する方法.ライブラリから適切なオブジェクトをドラッグしてビューに配置します.
アプリケーションで、入力として回転動作を使用する場合は、回転ジェスチャーレコーダを使用します.回転ジェスチャーは、通常、画面上でオブジェクトを操作するために使用されます.たとえば、ビューを回転したり、カスタムコントロールの値を更新したりするときに使用します.回転ジェスチャーは連続しています.したがって,回転値が変化するたびに動作方法が呼び出され,コンテンツの更新の余地が与えられる.
スケッチャーコーナーは、回転値を半径方向に通知します.指の間が直線である場合、指の初期位置に作成された直線は測定の開始点を表し、回転角度は0です.指が移動すると、各指の新しい位置の間に新しい線が作成されます.スケッチャーコーナー(Sketer Corner)は、初期の直線と各直線の角度を測定し、結果を回転アトリビュートに配置します.
回転ジェスチャースキャナは、回転開始を指示することにより、ユーザの指位置が変化したときに
Important
回転値をコンテンツに適用する場合は、特に注意してください.これは予想外の結果をもたらす可能性があります.「ジェスチリコグニゼ」によって報告された回転は、現在の指位置と初期指位置との間の角度を表す.各新しい回転値をコンテンツに適用すると、回転速度が速すぎます.代わりに、コンテンツの既存の値をキャッシュし、既存の値に回転を適用し、コンテンツに新しい値を再適用する必要があります.もう1つの方法は、新しい変更が有効になった後、回転要素を0.0にリセットすることです.
リスト1は、ユーザの指に沿ってビューを回転させる方法を示します.この方法では、現在の回転要素をビューの変形に適用し、スケッチャーアノテーションの回転アトリビュートを0.0にリセットします.回転要素をリセットすると、スケッチャーの年齢値を再設定した後に変更したサイズを通知できます.これは、ビューが線形に回転するだけです.
Listing 1 Rotating a viewビューの 少なくとも2つの指がスクリーンに触れていることを確認します.回転要素がコンテンツに正しく適用されていることを確認します.同じ回転値を少なくとも2回適用すると、大きな回転が発生します.この問題を解決するには、現在の回転値をコンテンツに適用し、回転アトリビュートを0.0に設定する必要があります.
"Measure the relative rotation of two fingers on the screen, and use that motion to rotate your content."
スクリーン上の2つの指の相対回転を測定し、対応する動きを使用して内容を回転させます.
Overview
回転ジェスチャーは、画面上の2本の指を1回ずつ回転させるときに発生する連続ジェスチャーです.回転ジェスチャーを検出するには、
UIRotationGestureRecognizer
を使用する必要があります.以下の方法の1つでジェス・チャーリー・コグニゼを実現することができる.
addGestureRecognizer(_:)
メソッドを呼び出します.アプリケーションで、入力として回転動作を使用する場合は、回転ジェスチャーレコーダを使用します.回転ジェスチャーは、通常、画面上でオブジェクトを操作するために使用されます.たとえば、ビューを回転したり、カスタムコントロールの値を更新したりするときに使用します.回転ジェスチャーは連続しています.したがって,回転値が変化するたびに動作方法が呼び出され,コンテンツの更新の余地が与えられる.
スケッチャーコーナーは、回転値を半径方向に通知します.指の間が直線である場合、指の初期位置に作成された直線は測定の開始点を表し、回転角度は0です.指が移動すると、各指の新しい位置の間に新しい線が作成されます.スケッチャーコーナー(Sketer Corner)は、初期の直線と各直線の角度を測定し、結果を回転アトリビュートに配置します.
回転ジェスチャースキャナは、回転開始を指示することにより、ユーザの指位置が変化したときに
UIGestureRecognizer.State.began
状態に入る.初期変更が完了すると、その後の変更により「ジェストゥリコガー年齢」がUIGestureRecognizer.State.changed
の状態になり、回転角度が更新されます.指がスクリーンから離れると、ジェスチリコグニゼはUIGestureRecognizer.State.ended
の状態に入ります.Important
回転値をコンテンツに適用する場合は、特に注意してください.これは予想外の結果をもたらす可能性があります.「ジェスチリコグニゼ」によって報告された回転は、現在の指位置と初期指位置との間の角度を表す.各新しい回転値をコンテンツに適用すると、回転速度が速すぎます.代わりに、コンテンツの既存の値をキャッシュし、既存の値に回転を適用し、コンテンツに新しい値を再適用する必要があります.もう1つの方法は、新しい変更が有効になった後、回転要素を0.0にリセットすることです.
リスト1は、ユーザの指に沿ってビューを回転させる方法を示します.この方法では、現在の回転要素をビューの変形に適用し、スケッチャーアノテーションの回転アトリビュートを0.0にリセットします.回転要素をリセットすると、スケッチャーの年齢値を再設定した後に変更したサイズを通知できます.これは、ビューが線形に回転するだけです.
Listing 1 Rotating a view
@IBAction func rotatePiece(_ gestureRecognizer : UIRotationGestureRecognizer) { // Move the anchor point of the view's layer to the center of the
// user's two fingers. This creates a more natural looking rotation.
guard gestureRecognizer.view != nil else { return }
if gestureRecognizer.state == .began || gestureRecognizer.state == .changed {
gestureRecognizer.view?.transform = gestureRecognizer.view!.transform.rotated(by: gestureRecognizer.rotation)
gestureRecognizer.rotation = 0
}}
不正なコードが呼び出されていないか、実行されていない場合は、次の条件がtrue
であるかどうかを確認し、変更が必要な場合は変更します.isUserInteractionEnabled
プロパティがtrue
であることを確認します.デフォルトでは、画像ビューとラベルはfalse
です.Reference
この問題について(Handling Rotation Gestures), 我々は、より多くの情報をここで見つけました https://velog.io/@panther222128/Handling-Rotation-Gesturesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol