iOS Swift Gestures:2つのアイテムをジェスチャーでリンクするにはどうすればよいですか?

パスカル・ロッセ

ビューに2つのボタンがあります。ボタンごとに1つずつ、合計2つのUIPanGestureRecognizerを作成しました。別々に動かすこともできますが、一方のボタンを右にスライドさせると、もう一方のボタンが左に移動するようにしたいと思います。私は本当にそれをする方法を知りません。ベストプラクティスは何ですか?

@IBAction func button1(_ sender: Any) {}
@IBAction func button2(_ sender: Any) {}

@IBAction func bottomButtonGesture
    (recognizer:UIPanGestureRecognizer) {

    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x:view.center.x + translation.x,
                              y:view.center.y/* + translation.y*/)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)
}

@IBAction func topButtonGesture
    (recognizer:UIPanGestureRecognizer) {

    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x:view.center.x - translation.x,
                              y:view.center.y/* + translation.y*/)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)
}
北東

各パンジェスチャIBActionで、パンされていないボタンを、パンされているボタンと反対のx位置を持つように設定します。

@IBAction func bottomButtonGesture
    (recognizer:UIPanGestureRecognizer) {

    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x: view.center.x + translation.x,
                              y: view.center.y)

        // Move the other button here too
        // Notice we are subtracting the translation.x value instead of adding
        button2.center = CGPoint(x: button2.center.x - translation.x,
                              y: button2.center.y)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)
}

@IBAction func topButtonGesture
    (recognizer:UIPanGestureRecognizer) {

    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x: view.center.x + translation.x,
                              y: view.center.y)

        // Move the other button here too
        // Notice we are subtracting the translation.x value instead of adding
        button1.center = CGPoint(x: button1.center.x - translation.x,
                              y: button1.center.y)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)
}

これが実際の遊び場です

import UIKit
import PlaygroundSupport

class ViewController: UIViewController {

    let button1 = UIButton(frame: CGRect(x: 160, y: 100, width: 40, height: 40))
    let button2 = UIButton(frame: CGRect(x: 160, y: 200, width: 40, height: 40))

    override func loadView() {
        super.loadView()

        // Tab Views
        button1.backgroundColor = .orange
        self.view.addSubview(button1)

        button2.backgroundColor = .blue
        self.view.addSubview(button2)

        let panGesture1 = UIPanGestureRecognizer(target: self, action: #selector(button1Pan(recognizer:)))
        button1.addGestureRecognizer(panGesture1)

        let panGesture2 = UIPanGestureRecognizer(target: self, action: #selector(button2Pan(recognizer:)))
        button2.addGestureRecognizer(panGesture2)
    }

    @objc func button1Pan(recognizer: UIPanGestureRecognizer) {
        let translation = recognizer.translation(in: self.view)
        if let view = recognizer.view {
            view.center = CGPoint(x:view.center.x + translation.x,
                                  y:view.center.y)

            // Move the other button here too
            button2.center = CGPoint(x: button2.center.x - translation.x,
                                     y: button2.center.y)
        }
        recognizer.setTranslation(CGPoint.zero, in: self.view)
    }

    @objc func button2Pan(recognizer: UIPanGestureRecognizer) {

            let translation = recognizer.translation(in: self.view)
            if let view = recognizer.view {
                view.center = CGPoint(x:view.center.x + translation.x,
                                      y:view.center.y)

                // Move the other button here too
                button1.center = CGPoint(x: button1.center.x - translation.x,
                                         y: button1.center.y)
            }
            recognizer.setTranslation(CGPoint.zero, in: self.view)
    }
}

PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = ViewController()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

iOS Swiftプロジェクトで下向き矢印/キャレット(iOS 9ミュージックアプリのように)を実装するにはどうすればよいですか?

分類Dev

iOS swift 3スイッチステートメントでタイプを変更するにはどうすればよいですか

分類Dev

iOS Swiftでオブジェクトのプロパティのタイプを取得するにはどうすればよいですか?

分類Dev

Swift iOSアプリでPHFComposeBarViewコントロールをアクティブにするにはどうすればよいですか?

分類Dev

Swift3 IOS円グラフにタップジェスチャ認識を追加するにはどうすればよいですか?

分類Dev

既存のXcode9 Swift 4 iOS 11プロジェクトにコアデータを追加するにはどうすればよいですか?

分類Dev

Mapview swift iosでカスタムピンイメージを設定するにはどうすればよいですか?

分類Dev

Swiftを使用してiOSカレンダーアプリでイベントの日付を編集するにはどうすればよいですか?

分類Dev

iOSゲームアプリswift3にプログラムでボタンを追加するにはどうすればよいですか?

分類Dev

Swift iOSアプリでステータスバーを非表示にするにはどうすればよいですか?

分類Dev

SwiftでiOSメールアプリを起動するにはどうすればよいですか?

分類Dev

xcodeプロジェクト内のフォルダのディレクトリを取得するにはどうすればよいですか?ios swift

分類Dev

xcodeプロジェクト内のフォルダのディレクトリを取得するにはどうすればよいですか?ios swift

分類Dev

iOSアプリ(Swift 5)でGoogle認証ステータスを確認するにはどうすればよいですか?

分類Dev

Swiftを使用してIOSのログインアプリの外部データベースにJSONデータを含むPOSTリクエストを送信するにはどうすればよいですか?

分類Dev

Swiftを使用してプログラムで最新のiOSバージョンを確認するにはどうすればよいですか?

分類Dev

iOS Swiftで半径50マイルに似たMKCoordinateリージョンを作成するにはどうすればよいですか?

分類Dev

Swift-iOSの場合AWSCognitoでユーザー認証のエラーをキャッチするにはどうすればよいですか?

分類Dev

Swift iOS:Instagramリンクを作成するにはどうすればよいですか?

分類Dev

動的サイズのSwiftでiOSアプリのフォントを変更するにはどうすればよいですか?

分類Dev

Swift iosの国のリストを取得するにはどうすればよいですか?

分類Dev

iOSアプリリンクのFacebook機能をSwift3に実装するにはどうすればよいですか?

分類Dev

ファイヤーストアドキュメントからキーを取得するにはどうすればよいですか(swift 4 / iosを使用)

分類Dev

Swiftでは、メインのiOSアプリから拡張機能(今日の拡張機能、カスタムキーボードなど)に永続変数を渡すにはどうすればよいですか?

分類Dev

Twitter Fabricログインセッション(iOS / Swift)を保存してアクセスするにはどうすればよいですか?

分類Dev

SwiftのプライベートiOSフレームワークを使用するにはどうすればよいですか?

分類Dev

コマンドラインからiOS用のSwiftパッケージを構築するにはどうすればよいですか?

分類Dev

iOS Swiftにハイパーリンクボタンを追加するにはどうすればよいですか?

分類Dev

IOS Swift 3の円グラフセクションからテキストを削除するにはどうすればよいですか?

Related 関連記事

  1. 1

    iOS Swiftプロジェクトで下向き矢印/キャレット(iOS 9ミュージックアプリのように)を実装するにはどうすればよいですか?

  2. 2

    iOS swift 3スイッチステートメントでタイプを変更するにはどうすればよいですか

  3. 3

    iOS Swiftでオブジェクトのプロパティのタイプを取得するにはどうすればよいですか?

  4. 4

    Swift iOSアプリでPHFComposeBarViewコントロールをアクティブにするにはどうすればよいですか?

  5. 5

    Swift3 IOS円グラフにタップジェスチャ認識を追加するにはどうすればよいですか?

  6. 6

    既存のXcode9 Swift 4 iOS 11プロジェクトにコアデータを追加するにはどうすればよいですか?

  7. 7

    Mapview swift iosでカスタムピンイメージを設定するにはどうすればよいですか?

  8. 8

    Swiftを使用してiOSカレンダーアプリでイベントの日付を編集するにはどうすればよいですか?

  9. 9

    iOSゲームアプリswift3にプログラムでボタンを追加するにはどうすればよいですか?

  10. 10

    Swift iOSアプリでステータスバーを非表示にするにはどうすればよいですか?

  11. 11

    SwiftでiOSメールアプリを起動するにはどうすればよいですか?

  12. 12

    xcodeプロジェクト内のフォルダのディレクトリを取得するにはどうすればよいですか?ios swift

  13. 13

    xcodeプロジェクト内のフォルダのディレクトリを取得するにはどうすればよいですか?ios swift

  14. 14

    iOSアプリ(Swift 5)でGoogle認証ステータスを確認するにはどうすればよいですか?

  15. 15

    Swiftを使用してIOSのログインアプリの外部データベースにJSONデータを含むPOSTリクエストを送信するにはどうすればよいですか?

  16. 16

    Swiftを使用してプログラムで最新のiOSバージョンを確認するにはどうすればよいですか?

  17. 17

    iOS Swiftで半径50マイルに似たMKCoordinateリージョンを作成するにはどうすればよいですか?

  18. 18

    Swift-iOSの場合AWSCognitoでユーザー認証のエラーをキャッチするにはどうすればよいですか?

  19. 19

    Swift iOS:Instagramリンクを作成するにはどうすればよいですか?

  20. 20

    動的サイズのSwiftでiOSアプリのフォントを変更するにはどうすればよいですか?

  21. 21

    Swift iosの国のリストを取得するにはどうすればよいですか?

  22. 22

    iOSアプリリンクのFacebook機能をSwift3に実装するにはどうすればよいですか?

  23. 23

    ファイヤーストアドキュメントからキーを取得するにはどうすればよいですか(swift 4 / iosを使用)

  24. 24

    Swiftでは、メインのiOSアプリから拡張機能(今日の拡張機能、カスタムキーボードなど)に永続変数を渡すにはどうすればよいですか?

  25. 25

    Twitter Fabricログインセッション(iOS / Swift)を保存してアクセスするにはどうすればよいですか?

  26. 26

    SwiftのプライベートiOSフレームワークを使用するにはどうすればよいですか?

  27. 27

    コマンドラインからiOS用のSwiftパッケージを構築するにはどうすればよいですか?

  28. 28

    iOS Swiftにハイパーリンクボタンを追加するにはどうすればよいですか?

  29. 29

    IOS Swift 3の円グラフセクションからテキストを削除するにはどうすればよいですか?

ホットタグ

アーカイブ