Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- viewDidLoad
- Git Tutorial
- Xcodebuild
- 패캠챌린지
- SWIFT
- iOS앱개발올인원패키지Online.
- git
- 픽셀
- 직장인인강
- 포인트
- git workflow
- 뉴모피즘
- commit
- 뉴북
- 직장인자기계발
- viewDidAppear
- 플랫디자인
- 디자인 트렌드
- 패스트캠퍼스후기
- 스큐어모피즘
- ios
- 아이폰
- commit messages
- commit message
- 8 그리드 시스템
- 머티리얼 디자인
- .DS_Store
- 입력 개수 제한
- 패스트캠퍼스
- 마크다운
Archives
- Today
- Total
왕논의 연구실
[Swift] Gesture Recogniger 짧게 요약 본문
Gesture Recognizer
터치와 관련된 제스처 이벤트를 인식하고, 액션 메세지를 보내 제스처 관련 이벤트를 처리
구현방법
- 스토리보드
- 코드(타겟 액션)
- 델리게이트
Tap
한손가락 또는 여러 손가락 짧게 한번 누르기
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapGesture))
outerView.addGestureRecognizer(tapGesture)
@objc func tapGesture(_ sender: UIGestureRecognizer) {
// 탭 액션
print("tap")
self.change = !self.change
self.view.backgroundColor = change ? .white : .black
}
Pinch
두 손가락 벌리기, 오므리기
scale은 변화값인 듯하다. 마지막에 1.0로 설정하지 않으면 누적되어 사용할수록 점점 빠르게 변한다.
let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchGesture(_:)))
outerView.addGestureRecognizer(pinchGesture)
@objc func pinchGesture(_ sender: UIGestureRecognizer) {
if let pinch = sender as? UIPinchGestureRecognizer {
outerView.transform = outerView.transform.scaledBy(x: pinch.scale, y: pinch.scale)
pinch.scale = 1.0
}
}
Rotation
회전
rotation은 회전값인 듯하다. 마지막에 0으로 설정하지 않으면 누적되어 사용할수록 점점 빠르게 회전한다.
let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(self.rotationGesture(_:)))
outerView.addGestureRecognizer(rotationGesture)
@objc func rotationGesture(_ sender: UIGestureRecognizer) {
if let rotation = sender as? UIRotationGestureRecognizer {
outerView.transform = outerView.transform.rotated(by: rotation.rotation)
rotation.rotation = 0
}
}
Swipe
선 긋기
direction으로 스와이프할 방향을 정해줘야한다.
let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(swipeGesture(_:)))
swipeGesture.direction = .down
view.addGestureRecognizer(swipeGesture)
@objc func swipeGesture(_ sender: UIGestureRecognizer) {
if let swipe = sender as? UISwipeGestureRecognizer {
print("swipe")
}
}
Pan
잡아 끌기
minimumNumberOfTouches으로 필요한 손가락수를 정할 수 있다.
변화값을 구해서 setTranslation으로 설정하지 않으면 pan한 방향으로 계속 나아간다.
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panGesture(_:)))
panGesture.minimumNumberOfTouches = 3 // 손가락 3개 필요
outerView.addGestureRecognizer(panGesture)
@objc func panGesture(_ sender: UIGestureRecognizer) {
if let pan = sender as? UIPanGestureRecognizer {
let transition = pan.translation(in: outerView)
let changedX = outerView.center.x + transition.x
let changedY = outerView.center.y + transition.y
outerView.center = CGPoint(x: changedX, y: changedY)
pan.setTranslation(CGPoint.zero, in: outerView)
}
}
ScreenEdgePan
가장자리 잡아 끌기
edges로 적용할 가장자리를 정해준다.
let edgeGesture = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(self.screenEdgeGesture(_:)))
edgeGesture.edges = .right // 오른쪽 가장자리
view.addGestureRecognizer(edgeGesture)
@objc func screenEdgeGesture(_ sender: UIGestureRecognizer) {
if let edge = sender as? UIScreenEdgePanGestureRecognizer {
print("edge.edges")
self.change = !self.change
outerView.backgroundColor = change ? .red : .blue
}
}
LongPress
길게 누르기
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressGesture(_:)))
longPress.numberOfTouchesRequired = 2 // 터치 손가락 수
longPress.numberOfTapsRequired = 2 // 터치 수. 추가적인 터치수라서 +1 해준 수를 터치해야한다.
longPress.minimumPressDuration = 3 // 누르는 시간
// 두 손가락으로 3번 터치해서 마지막에 3초간 눌러야한다.
outerView.addGestureRecognizer(longPress)
@objc func longPressGesture(_ sender: UIGestureRecognizer) {
if let press = sender as? UILongPressGestureRecognizer {
print("press")
self.change = !self.change
innerView.backgroundColor = change ? .yellow : .purple
}
}
코드로 하는 방법을 알아봤다.
델리게이트는 델리게이트를 연결하고 지정된 함수에 기능을 추가해주면 된다.
샘플인데 파일있는 위치 직접 들어가게 되어 있다.
https://github.com/ywangnon/Programming_Example/tree/master/GestureSample
'iOS > Swift' 카테고리의 다른 글
[Swift]동적 아이콘 변경 (0) | 2021.09.22 |
---|---|
[Swift]삼항연산자(?), 옵셔널 기본처리(??) (0) | 2021.09.22 |
[Swift]디버깅 식별자 (0) | 2021.09.22 |
한글 입력 제한에 대해서 (0) | 2021.01.27 |
배열 정렬에 대한 연구 (0) | 2021.01.06 |