-
[iOS] Label, Button 드래그로 위치 이동시키기Swift 2021. 1. 19. 11:01
개요
Label이나 Button 등을 드래그로 위치를 이동시키는 방법에 대해 글을 써보려고 합니다.
Label 생성하기
먼저 Label을 View에 추가해줍니다.
let draggableLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) draggableLabel.center = view.center draggableLabel.textAlignment = .center draggableLabel.text = "드래그로 이동하기" draggableLabel.isUserInteractionEnabled = true self.view.addSubview(dragableLabel)
GestureRecognizer 생성하기
생성된 Label 이 터치와 드래그를 인식할 수 있게 GestureRecognizer를 생성합니다.
let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
GestureRecognize 에는 Tap, LongPress, Pan, Hover, Swipe 등 여러 제스처에 대해 만들어 줄 수 있어,
이에 맞추어 원하는 제스처를 이용해 만들 수 있습니다.지금은 드래그를 했을 때 이벤트를 발생시킬 것 이므로 UIPanGestureRecognizer로 생성해줍니다.
드래그 이벤트 함수 생성
@objc func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) { // 드래그의 시작 확인 if gestureRecognizer.state == .began || gestureRecognizer.state == .changed { // 변환되는 좌표값을 얻어오기 let translation = gestureRecognizer.translation(in: self.view) gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y + translation.y) // Label에 해당되는 좌표를 적용시키기 gestureRecognizer.setTranslation(CGPoint.zero, in: self.view) } }
GestureRecognizer 추가
생성했던 Label 에 GestureRecognizer를 추가합니다.
dragableLabel.addGestureRecognizer(gestureRecognizer)
실행결과
'Swift' 카테고리의 다른 글
[iOS] NaverMap Curve/Arc 경로 라이브러리 (0) 2023.01.16 [iOS] HTML String을 WKWebView로 보여주기 (0) 2022.04.26 [iOS] 화면 캡쳐(Screenshot) 감지 (0) 2021.01.19 [iOS] Apple Silicon(M1)에서 cocoapods 실행하기 (0) 2021.01.07 [iOS] Crash Report 분석 (0) 2021.01.06