Swift UITapGestureRecognizer

2022. 5. 21. 23:40Swift

반응형
Swift UITapGestureRecognizer
UITapGestureRecognizer
  • 단일 또는 다중 탭을 해석하는 개별 제스처 인식기
func handleTap(sender: UITapGestureRecognizer) {
    if sender.state == .ended {
        // handling code
    }
}

https://devmjun.github.io/archive/CreatSubway-ver1

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        let frameSize = view.bounds.size
        scrollView = UIScrollView(frame: CGRect(origin: CGPoint.zero, size: frameSize))
        
        let image = UIImage(named: "seoul_subway.png")
        imageView = UIImageView(image: image)
        scrollView.contentSize = imageView.bounds.size
        
        scrollView.addSubview(imageView)
        view.addSubview(scrollView)
        
        // 텝 횟수에 따라서 동작 결정
        let doubleTap = UITapGestureRecognizer(target: self, action: #selector(self.tapToZoom))
        doubleTap.numberOfTapsRequired = 2
        doubleTap.numberOfTouchesRequired = 1
        
        // 더블텝 제스쳐를 scrllView 상위로 올렷다, 컨테이너 밖으로 벗어나면 터치가 안됨 ㅠㅠ
        scrollView.addGestureRecognizer(doubleTap)
    // 더블탭 기능, delegate 사용해서, addTaget 으로 사용함, 엄밀하게 더블텝을 위한것보다는, 델리게이트를 이용해서, 불려 오는 함수에 조건을 넣어서 기능을 구현했다.
    @objc func tapToZoom(_ gestureRecognizer: UIGestureRecognizer) {
        print("줌..")
        
        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 3.0
        
        scrollView.delegate = self
        
        // 더블탭 간단 하게 구현
        if scrollView.zoomScale == CGFloat(1) {
            scrollView.setZoomScale(3, animated: true)
        }else {
            scrollView.setZoomScale(1, animated: true)
        }
    }
반응형

'Swift' 카테고리의 다른 글

Swift Kakao API 연결하기  (0) 2022.06.02
Swift MVVM 알아보기  (0) 2022.05.29
Swift Github API 연결해보기  (0) 2022.05.19
Swift 인스타그램 앱 클론 코딩(6)  (0) 2022.05.08
Swift 인스타그램 앱 클론 코딩(5)  (0) 2022.05.07