안녕하세요. 도미닉입니다.
오늘은 iOS 에서 UIView 를 드래그하는 방법을 알아보겠습니다.
iOS 에서는 터치에 대한 제스처를 어떤 식으로 처리하고 있을까요?
iOS 에서 제스처를 처리하기 위해서는 UIGestureRecignizer 를 사용해야합니다.
drag 을 하기 위해서는 UIPanGestureRecignizer 을 사용해야 합니다.
공식문서를 보시면 UIPanGestureRecignizer 은 UIGestureRecignizer 의 subclass 입니다.
예제를 따라해가며 UIView 를 드래그하는 실습을 해보겠습니다.
Step1
위에 사진과 같이 UIView 를 화면에 생성합니다.
UIImageView 도 UIView 를 상속받기 때문에 가능합니다.
주황색 상자에 있는 User Interaction Enabled 를 체크합니다.
Step2
위와 같이 ViewController.swift 를 작성해줍니다.
@IBOutlet weak var imageView: UIImageView! 는 스토리보드에서 만든 UIImageView 와 연동해주어야 합니다.
Step3
시뮬레이터를 실행시키고 테스트해보시면 뷰가 드래그되고 마우스를 따라오는 것을 알 수 있습니다.
소스 분석
draggingView 메소드를 먼저 살펴봅시다.
첫번째 줄 : sender.location(in: view) 에서 손가락의 위치를 point 에 저장합니다.
두번째 줄 : sender.view 는 손가락이 클릭하고 있는 view 를 draggedView 에 저장합니다.
세번째 줄 : draggedView 의 중심을 손가락 위치인 point 에 따라 움직입니다.
정리
간단하게 UIView 를 드래그에 따라 움직이도록 소스를 작성해봤습니다.
비슷한 예제를 찾지 못해서 헤멨습니다.
도움이 됬으면 좋겠습니다.
아래 제가 참고한 유튜브를 보시면 동영상으로 예제를 따라해보실 수 있습니다.
참고 : https://www.youtube.com/watch?v=1U4-6CESv-s
예제 프로젝트 : https://github.com/kiljh-me/Pan