iOS - 실무관련/iOS
Pinch 제스처로 이미지 확대 축소하기
kkkkk1023
2022. 6. 5. 23:12
https://zeddios.tistory.com/343 Pinch 기본적인 코드는 해당 블로그 참고해서 작성
https://github.com/iOS-junsoo/Pinch 깃헙주소
1. 제한 없이 이미지 확대 축소하기
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
myView.isUserInteractionEnabled = true
}
var recognizerScale: CGFloat = 1.0
var maxScale: CGFloat = 2.0
var minScale: CGFloat = 1.0
@IBOutlet weak var myView: UIView!
@IBOutlet var PinchGestureRecognizer: UIPinchGestureRecognizer!
@IBAction func pinchAction(_ sender: Any) {
myView.transform = myView.transform.scaledBy(x: PinchGestureRecognizer.scale, y: PinchGestureRecognizer.scale)
PinchGestureRecognizer.scale = 1.0
}
}
2. 확대 축소 크기 제한두기
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
myView.isUserInteractionEnabled = true
}
var recognizerScale: CGFloat = 1.0
var maxScale: CGFloat = 2.0
var minScale: CGFloat = 1.0
@IBOutlet weak var myView: UIView!
@IBOutlet var PinchGestureRecognizer: UIPinchGestureRecognizer!
@IBAction func pinchAction(_ sender: Any) {
if PinchGestureRecognizer.state == .began || PinchGestureRecognizer.state == .changed{
if recognizerScale < maxScale && PinchGestureRecognizer.scale > 1.0 {
myView.transform = myView.transform.scaledBy(x: PinchGestureRecognizer.scale, y: PinchGestureRecognizer.scale)
recognizerScale *= PinchGestureRecognizer.scale
PinchGestureRecognizer.scale = 1.0
}
else if recognizerScale > minScale && PinchGestureRecognizer.scale < 1.0 {
myView.transform = myView.transform.scaledBy(x: PinchGestureRecognizer.scale, y: PinchGestureRecognizer.scale)
recognizerScale *= PinchGestureRecognizer.scale
PinchGestureRecognizer.scale = 1.0
}
}
}
}
3. 확대 축소 제한두고 너무 축소했을 때 원래대로 복귀
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
myView.isUserInteractionEnabled = true
}
var recognizerScale: CGFloat = 1.0 //이미지 스케일의 크기
var maxScale: CGFloat = 2.0
var minScale: CGFloat = 1.0
@IBOutlet weak var myView: UIView!
@IBOutlet var PinchGestureRecognizer: UIPinchGestureRecognizer!// 두 손가락의 거리
@IBAction func pinchAction(_ sender: Any) {
if PinchGestureRecognizer.state == .began || PinchGestureRecognizer.state == .changed{
if recognizerScale < maxScale && PinchGestureRecognizer.scale > 1.0 {
myView.transform = myView.transform.scaledBy(x: PinchGestureRecognizer.scale, y: PinchGestureRecognizer.scale)
recognizerScale *= PinchGestureRecognizer.scale
PinchGestureRecognizer.scale = 1.0
}
else if recognizerScale > 0.5 && PinchGestureRecognizer.scale < 1.0 {
myView.transform = myView.transform.scaledBy(x: PinchGestureRecognizer.scale, y: PinchGestureRecognizer.scale)
recognizerScale *= PinchGestureRecognizer.scale
PinchGestureRecognizer.scale = 1.0
}
}
else {
if recognizerScale < minScale {
myView.transform = CGAffineTransform.identity
PinchGestureRecognizer.scale = 1.0
}
}
}
}