개발자 코드(Code)/Swfit

IOS ) SwipeGuesture(스와이프 제스쳐)

Chain X 2020. 8. 27. 12:08
728x90
반응형

01
한 손가락 사용시 빨간색 // 두 손가락 사용시 초록색 

 

//
//  ViewController.swift
//  SwipeGesture
//
//  Created by Leo_Jang on 27/08/2020.
//  Copyright © 2020 Leo_Jang. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imgViewUp: UIImageView!
    @IBOutlet weak var imgViewLeft: UIImageView!
    @IBOutlet weak var imgViewRight: UIImageView!
    @IBOutlet weak var imgViewDown: UIImageView!
    
    // 각 이미지 마다 배열을 만들어준다.  사진을 넣기 위해서
    // 0 번은 디폴트 값 1번은  한 손가락 사용시 배열
    var imgLeft = [UIImage]()
    var imgRight = [UIImage]()
    var imgUp = [UIImage]()
    var imgDown = [UIImage]()
    //두 번째 손가락 사용시 // 실제 아이폰은 5손 가락가지 가능 하지만 시뮬레이터는 두 손가락까지만 가능
    let numOfTouches = 2
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        // 0번은 디폴트 값 // 손가락 하나를 사용해서 한 것
        imgUp.append(UIImage(named: "arrow-up-black.png")!)
        imgUp.append(UIImage(named: "arrow-up-red.png")!)
        imgUp.append(UIImage(named: "arrow-up-green.png")!)
        
        imgDown.append(UIImage(named: "arrow-down-black.png")!)
        imgDown.append(UIImage(named: "arrow-down-red.png")!)
        imgDown.append(UIImage(named: "arrow-down-green.png")!)
        
        imgLeft.append(UIImage(named: "arrow-left-black.png")!)
        imgLeft.append(UIImage(named: "arrow-left-red.png")!)
        imgLeft.append(UIImage(named: "arrow-left-green.png")!)
        
        imgRight.append(UIImage(named: "arrow-right-black.png")!)
        imgRight.append(UIImage(named: "arrow-right-red.png")!)
        imgRight.append(UIImage(named: "arrow-right-green.png")!)
        
        
        
        //초기화면 띄우기
        imgViewUp.image = imgUp[0]
        imgViewDown.image = imgDown[0]
        imgViewLeft.image = imgLeft[0]
        imgViewRight.image = imgRight[0]
        
        // 한 손가락 Gesture // 기본으로 기능이 추가된 상태에서 사용자가 어떤걸 사용할지 대기하는 것
        // UP
        let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGesture(_ :)))
        swipeUp.direction = UISwipeGestureRecognizer.Direction.up
        self.view.addGestureRecognizer(swipeUp)
        // Down
        let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGesture(_ :)))
               swipeDown.direction = UISwipeGestureRecognizer.Direction.down
               self.view.addGestureRecognizer(swipeDown)
        // Left
        let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGesture(_ :)))
               swipeLeft.direction = UISwipeGestureRecognizer.Direction.left
               self.view.addGestureRecognizer(swipeLeft)
        // Right
        let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGesture(_ :)))
               swipeRight.direction = UISwipeGestureRecognizer.Direction.right
               self.view.addGestureRecognizer(swipeRight)
        
        // 두 손가락 사용시
        // UP
        let swipeUpMulti = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGestureMulti(_ :)))
        swipeUpMulti.direction = UISwipeGestureRecognizer.Direction.up
        swipeUpMulti.numberOfTouchesRequired = numOfTouches
        self.view.addGestureRecognizer(swipeUpMulti)
        // Down
        let swipeDownMulti = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGestureMulti(_ :)))
        swipeDownMulti.direction = UISwipeGestureRecognizer.Direction.down
        swipeDownMulti.numberOfTouchesRequired = numOfTouches
        self.view.addGestureRecognizer(swipeDownMulti)
        // Left
        let swipeLeftMulti = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGestureMulti(_ :)))
        swipeLeftMulti.direction = UISwipeGestureRecognizer.Direction.left
        swipeLeftMulti.numberOfTouchesRequired = numOfTouches
        self.view.addGestureRecognizer(swipeLeftMulti)
        // Right
        let swipeRightMulti = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGestureMulti(_ :)))
        swipeRightMulti.direction = UISwipeGestureRecognizer.Direction.right
        swipeRightMulti.numberOfTouchesRequired = numOfTouches
        self.view.addGestureRecognizer(swipeRightMulti)
        
        
    }
    // 초기 값을 주기 위해 손을 떼고나서 다시 기본 값으로 간다.
    // 이미지 바뀌는 구간
    // 한 손가락 사용시
    @objc func responseToSwipeGesture(_ gesture: UISwipeGestureRecognizer){
        if let swipeGesture = gesture as? UISwipeGestureRecognizer{
            imgViewUp.image = imgUp[0] // 이 값일 경우
            imgViewDown.image = imgDown[0]
            imgViewLeft.image = imgLeft[0]
            imgViewRight.image = imgRight[0]
            
            switch swipeGesture.direction{
            case UISwipeGestureRecognizer.Direction.up:
                imgViewUp.image = imgUp[1]
            case UISwipeGestureRecognizer.Direction.down:
                imgViewDown.image = imgDown[1]
            case UISwipeGestureRecognizer.Direction.left:
                imgViewLeft.image = imgLeft[1]
            case UISwipeGestureRecognizer.Direction.right:
                imgViewRight.image = imgRight[1]
            default:
                break
            }
        }
    }
    // 두 손가락 사용시                  // 터시 스크린 인식 코드 :UISwipeGestureRecognizer
    @objc func responseToSwipeGestureMulti(_ gesture: UISwipeGestureRecognizer){
          if let swipeGesture = gesture as? UISwipeGestureRecognizer{
              imgViewUp.image = imgUp[0] // 이 값일 경우
              imgViewDown.image = imgDown[0]
              imgViewLeft.image = imgLeft[0]
              imgViewRight.image = imgRight[0]
              
              switch swipeGesture.direction{
              case UISwipeGestureRecognizer.Direction.up:
                  imgViewUp.image = imgUp[2]
              case UISwipeGestureRecognizer.Direction.down:
                  imgViewDown.image = imgDown[2]
              case UISwipeGestureRecognizer.Direction.left:
                  imgViewLeft.image = imgLeft[2]
              case UISwipeGestureRecognizer.Direction.right:
                  imgViewRight.image = imgRight[2]
              default:
                  break
              }
          }
      }
}///-----------

반응형