pinch와 Double tap으로 zoom의 UIImageView 만들기
UIImageView로 복원하기 때문에 간단하게 필기를 했습니다.들여쓰기 시 배율 조정된 UIImageView
UIScrollView를 사용하면 UIImageView 곤경에서 초점을 맞추는 코드 검색이 많이 나오지만 프로그램을 먼저 기록한다.UIScrollView에 UIImageView 배치
우선 초점을 맞추려는
UIImageView를 UIScrollView에 설정해야 한다.이는
Storyboard에서 선택한 경우UIImageView 이후Editor 메뉴Embed in에서 선택한 경우Scroll View.코드의 경우
UIScrollViewaddSubview(_ 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가 더블 헤드에 반응하도록 한다.UITapGestureRecognizernumberOfTapRequired를 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.)