티스토리 뷰
핀치 제스처 또한 iOS에서 가장 많이 사용하는 동작 중 하나로, 두 손가락을 화면에 터치한 후 간격을 벌리고 좁히는 동작으로 화면을 확대, 축소할 때 많이 사용한다.
기본적으로 제스처를 다루는 방법은 앞서 진행했던 스와이프 제스처와 아주 비슷하기 때문에 그렇게 어려운 내용은 없다.
핀치 제스처로 폰트를 조절하는 예제와 이미지의 크기를 조절하는 예제를 다뤄보려고 한다.
우선, 텍스트의 폰트를 조절하기 위해 스토리보드에 레이블을 하나 올려두자.
코드도 굉장히 간단하다.
import UIKit
class ViewController: UIViewController {
@IBOutlet var txtPinch: UILabel!
var initialFontSize:CGFloat!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// UIPinchGestureRecognizer 객체 생성 후 @objc 메서드를 넘겨줌
let pinch = UIPinchGestureRecognizer(target: self, action: #selector(ViewController.doPinch(_:)))
// View에 GestureRecognizer 등록
self.view.addGestureRecognizer(pinch)
}
@objc func doPinch(_ pinch: UIPinchGestureRecognizer) {
if (pinch.state == UIGestureRecognizer.State.began) {
initialFontSize = txtPinch.font.pointSize
} else {
txtPinch.font = txtPinch.font.withSize(initialFontSize * pinch.scale)
}
}
}
UIPinchGestureRecognizer 객체를 하나 생성하여, 제스처를 받았을 때 호출할 @objc함수를 인자로 넣어주고 View에 등록하기만 하면 된다.
이미지도 마찬가지로 구성하면 된다.
import UIKit
class ViewController: UIViewController {
@IBOutlet var imgPinch: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// UIPinchGestureRecognizer 선언
let pinch = UIPinchGestureRecognizer(target: self, action: #selector(ViewController.doPinch(_:)))
// view에 Pinch 제스처 등록
self.view.addGestureRecognizer(pinch)
}
@objc func doPinch(_ pinch: UIPinchGestureRecognizer) {
// 이미지를 스케일에 맞게 변환
imgPinch.transform = imgPinch.transform.scaledBy(x: pinch.scale, y: pinch.scale)
// 다음 변환을 위한 핀치 속성 = 1
pinch.scale = 1
}
}
끝!!
반응형
'Mobile > ios' 카테고리의 다른 글
[ios] ios 16: 스와이프 제스처 (0) | 2022.12.22 |
---|---|
[ios] ios 15: 탭과 터치를 사용한 스케치 (0) | 2022.12.22 |
[ios] ios 14: 카메라와 포토 라이브러리에서 미디어 가져오기 (0) | 2022.12.22 |
[ios] ios 13: 비디오 재생 (0) | 2022.12.22 |
[ios] ios 12: 음악 재생 & 녹음 (0) | 2022.12.21 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- 인천 구월동 맛집
- redux
- react
- Promise
- 정보보안기사 #실기 #정리
- javascript
- 인천 구월동 이탈리안 맛집
- Async
- await
- 파니노구스토
- redux-thunk
- AsyncStorage
- react-native
- 맛집
- 이탈리안 레스토랑
- Total
- Today
- Yesterday