iOS프로그래밍(스위프트) 핀치 제스처로 두 손가락으로 이미지 확대/축소하는 예제
핀치 제스처(Pinch Gesture)는 두 손가락으로 화면을 확대/축소할 때 사용하는 이벤트입니다. 화면 축소 확대/축소 기능이 들어간 모든 앱에서 사용할 수 있습니다. 이 글에서는 이미지를 확대/축소하는 앱을 만들어보겠습니다.
먼저 Xcode를 실행하고, 새 프로젝트를 생성합니다.
■ 화면 구성하기
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프로그래밍 학습을 위해
더 많은 예제 보러가기
--------------------------
'컴퓨터 공학 > Swift' 카테고리의 다른 글
스위프트 기본 명명 규칙 및 참고할 만한 공식 문서 (2) | 2020.09.22 |
---|---|
스위프트 코드를 macOS말고 다른 실행 환경에서 테스트하기 (0) | 2020.09.22 |
[스위프트]핀치 제스처로 두 손가락으로 텍스트 확대/축소하기 (0) | 2020.08.30 |
[스위프트]화면 터치해서 그리는 스케치 앱 만들기 (3) | 2020.08.29 |
[스위프트]코어그래픽스로 화면에 그림(원, 사각형, 삼각형, 호) 그리기/콘텍스트(context)개념 이해하기 (2) | 2020.08.28 |
댓글