iOS UIView 드래그하기

2019-08-13
iOS

안녕하세요. 도미닉입니다.

오늘은 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