일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
31 |
- MVVM
- Protocol
- combine
- 리펙토링
- 애니메이션
- Xcode
- swiftUI
- collectionview
- rxswift
- swift documentation
- UITextView
- RxCocoa
- Clean Code
- UICollectionView
- Human interface guide
- Refactoring
- SWIFT
- clean architecture
- HIG
- ios
- tableView
- ribs
- uiscrollview
- 클린 코드
- 스위프트
- map
- 리펙터링
- Observable
- uitableview
- 리팩토링
- Today
- Total
목록UIPanGestureRecognizer (4)
김종권의 iOS 앱 개발 알아가기
구현 아이디어 - 뷰의 구조 레이아웃을 쉽게하기 위해서 뷰 2개를 사용 맨 아래에 깔린 뷰 - 터치 이벤트가 아래 뷰에 전달되는 PassThroughView를 사용 그 위에 UIView를 얹는 형태 (= bottomSheetView) BottomSheetView의 constraint left.right.bottom은 superview와 같도록 정의 top은 미리 정의해둔 yPosition만큼 top의 간격만큼 처리 // tip(아래쪽에 붙어있는 모드)과 full로 정하고, 각 yPosition을 계산 enum Mode { case tip case full } private enum Const { static let bottomSheetRatio: (Mode) -> Double = { mode in swi..
구현 아이디어 UIGestureRecognizer를 사용하여 제스쳐 이벤트를 감지 제스쳐 이벤트가 발생하면, 애니메이션 실행 애니메이션은 UIViewPropertyAnimator를 사용하여 구현 애니메이션은 다음 뷰가 점점 보여지도록 설정 UIViewPropertyAnimator를 사용하면 현재 진행되고 있는 진행률에 따라 애니메이션을 진행시킬 수 있고, 다시 reversed 시키는 기능이 편하므로 사용 드래그하면 뷰가 따라서 이동되게끔 하는 구현 아이디어 animator 정의 (transform 사용하여 뷰가 왼쪽으로 이동되는 애니메이션) gesture의 began상태 - animator를 생성 gesture의 changed 상태 - 현재까지 swipe된 x좌표와, width를 구하고 비율을 구하여 U..
구현 아이디어 아래로 당겨서 dismiss되는 UIViewController를 상속받은 `ViewControllerPannable` 클래스 정의 class ViewControllerPannable: UIViewController {} 내부에서 UIPanGestureRecognizer 제스처 등록 override func viewDidLoad() { super.viewDidLoad() let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panGestureAction(_:))) self.view.addGestureRecognizer(panGestureRecognizer) } @objc func panGestur..
의존성 RxSwift, RxCocoa를 사용하여 편리하게 binding pod 'RxSwift' pod 'RxCocoa' UIPanGestureRecognizer() 등록 초기 코드 import UIKit import RxSwift import RxCocoa class ViewController: UIViewController { let bag = DisposeBag() @IBOutlet weak var myView: UIView! override func viewDidLoad() { super.viewDidLoad() setupInputBinding() } private func setupInputBinding() { } } binding 구현 - sender.trnslation(in:superView..