본문 바로가기
컴퓨터 공학/Swift

[스위프트]핀치 제스처로 두 손가락으로 이미지 확대/축소하기

by hahehohoo 2020. 9. 1.
반응형

iOS프로그래밍(스위프트) 핀치 제스처로 두 손가락으로 이미지 확대/축소하는 예제

 

핀치 제스처(Pinch Gesture)는 두 손가락으로 화면을 확대/축소할 때 사용하는 이벤트입니다. 화면 축소 확대/축소 기능이 들어간 모든 앱에서 사용할 수 있습니다. 이 글에서는 이미지를 확대/축소하는 앱을 만들어보겠습니다. 

 

먼저 Xcode를 실행하고, 새 프로젝트를 생성합니다. 

 

▶ 새 프로젝트 만드는 방법

 

[스위프트] Xcode 새 프로젝트 만들기

2020 Xcode 새 프로젝트 만들기 STEP 1  Xcode 실행하고 Create a new Xcode project를 클릭하여 새 프로젝트 만들기 STEP 2  템플릿 선택하기 [Single View App] 를 선택하고 Next를 눌러주세요. STEP 3..

bite-sized-learning.tistory.com

 

 

 


■ 화면 구성하기 

STEP 1 이미지 뷰(Image View)를 스토리보드에 추가합니다. 

 

STEP 2 이미지 뷰의 제약조건을 설정합니다. 

 

STEP 3 이미지 뷰에 이미지 넣기

왼쪽 네비게이터 영역에 원하는 이미지를 드래그앤드롭합니다. 

이미지뷰를 클릭하고, 오른쪽 [Attributes inspector] 버튼을 클릭하고 image에서 앞에서 추가한 이미지를 선택합니다. 


 

■ 코드 작성하기

보조편집기를 엽니다. 

(전체 코드는 이 글 맨 아래에 있습니다. )

STEP 4 이미지 뷰의 아울렛 변수를 추가합니다. 

이미지 뷰을 오른쪽 마우스로 클릭하여 클래스명 아래로 드래그앤드롭합니다. 

변수명은 imgPinch로 했습니다. 

 


STEP 5 핀치 제스처 등록합니다. 

핀치 제스처는 UIPinchGestureRecognizer 클래스에 의해 인식되므로 이 클래스를 선언하고 핀치 제스처를 등록해야 합니다. 

코드설명

19번: UIPinchGestureRecognizer 클래스 상수 pinch를 선언합니다. 액션 인수는 핀치 제스처가 인식되었을 때 실행할 메서드를 의미합니다. 

20번: 뷰 객체의 UIPinchGestureRecognizer 메서드를 사용해 핀치 제스처를 사용합니다. 

 

 

STEP 6 액션 메서드 doPinch를 구현합니다. 

핀치제스처가 인식되었을 때 실행할 액션 메서드입니다. 

 

STEP 7 앱 실행

 

 

 

 

시뮬레이터로 실습할 때는 option키를 누른 상태에서 마우스를 움직여야 합니다. 

 

 

 

 

전체코드

더보기

import UIKit

 

class ViewController: UIViewController {

    @IBOutlet var imgPinch: UIImageView!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        let pinch = UIPinchGestureRecognizer(target: self, action: #selector(ViewController.doPinch(_:)))

        self.view.addGestureRecognizer(pinch)

    }

    

    @objc func doPinch(_ pinch: UIPinchGestureRecognizer){

        imgPinch.transform = imgPinch.transform.scaledBy(x: pinch.scale, y: pinch.scale) // 이미지 imgPinch를 scale에 맞게 변환

        pinch.scale = 1 //다음 변환을 위하여 핀지의 스케일 속성을 1로 설정

    }

 

}

import UIKit

 

class ViewController: UIViewController {

    @IBOutlet var imgPinch: UIImageView!

    var initialFontSize:CGFloat!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        let pinch = UIPinchGestureRecognizer(target: self, action: #selector(ViewController.doPinch(_:)))

        self.view.addGestureRecognizer(pinch)

    }

    

    @objc func doPinch(_ pinch: UIPinchGestureRecognizer){

        imgPinch.transform = imgPinch.transform.scaledBy(x: pinch.scale, y: pinch.scale) // 이미지 imgPinch를 scale에 맞게 변환

        pinch.scale = 1 //다음 변환을 위하여 핀지의 스케일 속성을 1로 설정

    }

 

}

 

 

 

 

 

--------------------------

iOS프로그래밍 학습을 위해

더 많은 예제 보러가기 

--------------------------

 

반응형


댓글