pinch와 Double tap으로 zoom의 UIImageView 만들기
UIImageView
로 복원하기 때문에 간단하게 필기를 했습니다.들여쓰기 시 배율 조정된 UIImageView
UIScrollView
를 사용하면 UIImageView
곤경에서 초점을 맞추는 코드 검색이 많이 나오지만 프로그램을 먼저 기록한다.UIScrollView에 UIImageView 배치
우선 초점을 맞추려는
UIImageView
를 UIScrollView
에 설정해야 한다.이는
Storyboard
에서 선택한 경우UIImageView
이후Editor
메뉴Embed in
에서 선택한 경우Scroll View
.코드의 경우
UIScrollView
addSubview(_ view:)
에서 진행됩니다.scrollView.addSubview(imageView)
UIScrollView delegate 구성
Storyboard
도 UIViewController
의 코드를 연결해서 쓸 수 있다zoomByPinchDoubleTap.swift
scrollView.delegate = self
UIScrollView의 maximuZoomSccalle 구성
기본값
maximumZoomScale
은 1이므로 초점이 변하지 않습니다.이번에는 4배로 초점이 맞춰졌다.
zoomByPinchDoubleTap.swift
self.scrollView.maximumZoomScale = 4.0
UIViewController는 UIScrollViewDelegate 프로토콜을 지원합니다.
UIScrollViewDelegate
필요한 함수는 없지만 초점이 필요해viewForZooming(in:)
.반환 값은 UIScrollView
에 포함됩니다UIImageView
.zoomByPinchDoubleTap.swift
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
위에서 말한 바와 같이 수축 상태에서 초점UIImageVIew
을 바꿀 수 있다.이번에는 더블 헤드로 2배, 4배의 초점을 맞춰야 하기 때문에 후술
UITapGestureRecognizer
을 사용했다.이중 탭을 사용하여 배율 조정
이 동작을 실행하기 위해서
UITapGestureRecognizer
를 사용하여 이벤트를 가져오고 그림 크기를 수동으로 변경합니다.단계는 다음과 같습니다.
UIScrollView에서 UITOPGesture Recognizer 설정
UIScrollView
를 설정하여 UITapGestureRecognizer
가 더블 헤드에 반응하도록 한다.UITapGestureRecognizer
numberOfTapRequired
를 2로 설정하여 더블 헤드에 반응한다.zoomByPinchDoubleTap.swift
let recognizer = UITapGestureRecognizer(target: self,
action: #selector(onDoubleTap(_:)))
recognizer.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(recognizer)
두 번 클릭할 때 동작에 그림 크기 조정 코드를 쓰십시오
구체적으로
UIScrollView
의 크기와 scale
에 따라 그림의 표시 범위를 계산하여 UIScrollView
를 이 범위까지 초점화한다.최대 4배까지 초점이 맞춰졌다면 1배로 회복된다.
zoomByPinchDoubleTap.swift
@objc func onDoubleTap(_ sender: UITapGestureRecognizer) {
let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale)
if scale != scrollView.zoomScale {
let tapPoint = sender.location(in: imageView)
let size = CGSize(width: scrollView.frame.size.width / scale,
height: scrollView.frame.size.height / scale)
let origin = CGPoint(x: tapPoint.x - size.width / 2,
y: tapPoint.y - size.height / 2)
scrollView.zoom(to: CGRect(origin: origin, size: size), animated: true)
}
else {
scrollView.zoom(to: scrollView.frame, animated: true)
}
}
코드
클립과 더블 헤드 줌
UIImageView
을 사용한 ViewController
코드가 GiitHub에 놓여 있다.Reference
이 문제에 관하여(pinch와 Double tap으로 zoom의 UIImageView 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/paraches/articles/zoom-pinch-double-tap텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)