일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tableView
- uiscrollview
- rxswift
- MVVM
- ios
- SWIFT
- HIG
- swift documentation
- 애니메이션
- RxCocoa
- collectionview
- UITextView
- ribs
- swiftUI
- 리펙터링
- 클린 코드
- clean architecture
- combine
- 스위프트
- map
- uitableview
- Refactoring
- Protocol
- Xcode
- Human interface guide
- 리펙토링
- 리팩토링
- Observable
- Clean Code
- UICollectionView
- Today
- Total
목록2022/03 (31)
김종권의 iOS 앱 개발 알아가기
인덱싱으로 배열을 쪼갰을때 SubSequnce(=ArraySlice형) let array = [1,2,3,4,5] // [Int] let first = array[..
* 예제에서 UI 레이아웃을 코드로 편리하게 작성하기 위해 SnapKit 프레임워크 사용 (SnapKit 필수로 알아야 하는 것 포스팅 글 참고) 애니메이션에 사용될 뷰 준비 animationTargetView 선언 // ViewController.swift import UIKit import SnapKit private lazy var animationTargetView: UIView = { let view = UIView() view.backgroundColor = .systemBlue self.view.addSubview(view) return view }() self.animationTargetView.snp.makeConstraints { $0.top.equalTo(self.view.safeAr..
* 구현에서 편리한 레이아웃 작성을 위해 사용한 프레임 워크 pod 'SnapKit' 구현 아이디어 AutoLayout을 이용하여 progressBar의 width를 업데이트하면서 progressBar 구현 progress를 업데이트하면 로딩이 매끄럽지 않고 끊겨져 보일 수 있으므로, UIView.animate 사용 구현 ProgressBarView 정의 import UIKit import SnapKit final class ProgressBarView: UIView { } progressBarView 뷰 정의 private let progressBarView: UIView = { let view = UIView() view.backgroundColor = .systemBlue return view }(..
UIGestureRecognizer Gesture를 등록할 때는 UIView의 성격을 가지고 있으면 UIGestureRecognizer를 등록하여 사용 // tap gesture let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:))) myView.addGestureRecognizer(tapGesture) @objc func handleTap(_ sender: UITapGestureRecognizer? = nil) { // handle... } // swipe gesture let swipeGesture = UISwipeGestureRecognizer(target: self, action: #se..
인라인의 개념 swift에만 있는 기능이 아닌, 일반적으로 프로그래밍 언어에 있는 기능 컴파일러 최적화에서 사용 인라인이란, 메서드 호출을 해당 메서드의 본문으로 대체하는 컴파일러 최적화 방법 일반적인 메소드를 호출하는 작업: 스레드에 있는 스택 테스크(추적, 앱 상태 전송, 저장, 변경)하는 과정이 존재 (장점 - 디버깅 용이, 단점 - 오버헤드) 인라인을 사용한 경우, 메소드 호출: 스택을 따로 추적하지 않고 메소드의 본문을 바로 가져다가 사용 (장점 - 오버헤드 감소, 단점 - 함수 body가 재귀 호출과 같은 반복이 있는 경우에는 더 비효율적) ex) 인라인의 개념 예제 인라인이 적용되지 않은 것 override func viewDidLoad() { super.viewDidLoad() self.p..
구현 아이디어 tableView의 커스텀 Cell에 collectionView를 넣어서 구현 tableView의 커스텀 Cell은 collectionView를 가지고 있으므로, 커스텀 Cell에서 컬렉션 뷰에 뿌려줄 dataSource를 가지고 있는 상태 예제코드에서 사용한 프레임워크 코드로 UI 구현 시 편리함을 위해 사용 pod 'SnapKit' pod 'Then' 샘플 Model 정의 tableView와 collectionView에 표출될 샘플 모델 정의 collectionViewCell에 사용될 데이터: Subcategory의 colors tableViewCell에 사용될 데이터: SubCategory의 name tableViewHeader에 사용될 데이터: CategoryModel의 name s..
1. UICollectionView의 SupplementaryView(HeaderView, FooterView, UICollectionReusableView) 2. UICollectionView의 DecorationView, SupplementaryView 커스텀 CollectionViewFlowLayout DecorationView 이란? collectionView에 Cell에 의존하지 않고 별도로 추가할 수 있는 뷰 DecorationView 전용 뷰를 따로 만든 후, register()해서 사용 UICollectionViewLayout에서 register()가 가능하므로, UICollectionViewFlowLayout이나 UICollectionViewLayout을 상속받아서 구현 prepare()..
1. UICollectionView의 SupplementaryView(HeaderView, FooterView, UICollectionReusableView) 2. UICollectionView의 DecorationView, SupplementaryView 커스텀 Layout SupplementaryView 개념 SupplementaryView는 UITableView에서의 Header와 Footer와 동일한 개념 Section 하나에 위 or 아래에 위치하는 뷰 * 아래부터 예시 코드들은 UI들을 편리하게 작성하기 위해 아래 프레임워크 사용 pod 'SnapKit' pod 'Then' SupplementaryView에 사용할 커스텀뷰 UITableView에서는 HeaderView or FoorterVie..