일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- collectionview
- map
- Protocol
- swiftUI
- ribs
- 클린 코드
- 애니메이션
- UICollectionView
- MVVM
- Clean Code
- Xcode
- Refactoring
- clean architecture
- UITextView
- uitableview
- swift documentation
- rxswift
- RxCocoa
- 리펙토링
- SWIFT
- combine
- ios
- 스위프트
- tableView
- 리팩토링
- Observable
- HIG
- 리펙터링
- Human interface guide
- uiscrollview
- Today
- Total
목록2022/05 (31)
김종권의 iOS 앱 개발 알아가기
Roundable 버튼 layer.cornerRadius값이 width나 height의 값의 반일때 원이 되므로 이 특성을 사용 // ViewController.swift NSLayoutConstraint.activate([ self.circleView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 120), self.circleView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), self.circleView.widthAnchor.constraint(equalToConstant: 120), self.circleView.heightAnchor.constraint(equalToCons..
Layout 용어와 layoutSubviews() 메소드 UIView의 layout이라는 의미는 위치와 크기를 의미 layoutSubviews() 메소드는 UIView의 layout을 변경 즉, layoutSubviews() 메소드는 UIView의 위치와 크기를 재조정하는 메소드 layoutSubviews()는 재귀적으로 자식들의 layoutSubviews()도 재귀적으로 실행 layoutSubviews()가 실행되는 시점은 main run loop에 따라서 실행 UI를 건드리는 작업은 디바이스에 부담이 되는 작업이므로 내부적으로 UI 작업에 main run loop라는 방법을 통해 해결 Main Run Loop 개념 앱이 실행되면 iOS는 내부적으로 메인 스레드에서 main run loop를 실행 iO..
cf) UIWindow에 로딩화면을 추가하여, 일부가 아닌 화면 전체에 interaction을 막는 LoadingView 구현 방법은 이전 포스팅 글 참고 UIActivityIndicatorView 아이폰의 기본 로딩 UI가 있는 뷰 UIActivityIndicatorView(style: .medium) 메소드를 통해 로딩상태와 로딩상태가 아닌 UI로 쉽게 변경이 가능 activityIndicatorView.startAnimating() activityIndicatorView.stopAnimating() style에는 대표적으로 medium과 large가 존재 로딩 뷰 구현 아이템을 로드할땐 로딩 뷰가 보이도록하고 로드가 완료되었을땐 로딩 뷰가 안보이도록 설정 사용하는쪽에서는 단순히 isLoading프로..
normal 이미지 highlighted 이미지 Highlighted에 원하는 이미지 표출 구현 아이디어 커스텀 셀을 정의할때 highlighted를 override하여 highlighted될 시점에 UIView.transition 애니메이션을 통해 애니메이션을 변경했다가, comletion 블럭에서 다시 이미지를 복구 UIImageView의 이미지가 변하는 애니메이션은 UIView.animate는 적용이 안되고 UIView.transtion을 사용해야 동작하는것을 주의 Highlighted 애니메이션 처리 주의할 점 UITableViewCell은 메소드에서 이벤트를 받아서 처리 final class MyTableViewCell: UITableViewCell { override func setHighli..
1. Section, Item 모델링 - 단일 Section, 다중 Item 모델링 방법 (UITableView, UICollectionView) 2. Section, Item 모델링 - 다중 Section, 다중 Item 모델링 방법 (UITableView, UICollectionView) 예제에 사용한 프레임워크 Then - 초기화하는 동시에 프로퍼티에 접근하여 sugar programming을 위해 사용 SnapKit - UI의 오토레이아웃 구현에 편의를 위해 사용 RxSwift, RxCocoa - 비동기 처리에 편의를 위해 사용 RxDataSources - dataSource는 UITableViewDataSource 델리게이트를 사용하면 되지만 편의를 위해서 RxDataSource 사용 cf) 만..
1. Section, Item 모델링 - 단일 Section, 다중 Item 모델링 방법 (UITableView, UICollectionView) 2. Section, Item 모델링 - 다중 Section, 다중 Item 모델링 방법 (UITableView, UICollectionView) 예제에 사용한 framework Cell안의 UI 인터렉션 처리를 위해 일반적으로 많이 사용하는 비동기 처리 방식 예제를 보이기 위해 아래 프레임워크 사용 RxSwift와 RxCocoa 사용 다중 Item 모델링 아이디어 ViewController에서 UITableView를 가지고 있고 이 tableView의 셀 처리를 쉽게 하고싶은 경우 모델링이 중요 tableView에서 사용할 데이터 소스의 형태는 아래와 같은 ..
KeyPath 이해하기 Key의 개념은 Objective-C에서 프로퍼티에 접근할 때 사용하는 개념 단순히 Key는 문자열 값이고, 이 문자열 값을 가지고 프로퍼티에 접근하는 방식 구체적인 개념은 이전 포스팅 글 참고 KeyPath는 Root라는 타입으로부터 구체적인 Value Type으로의 key의 경로를 의미 ex) KeyPath 개념 이해하기 이전 포스팅 글에서 알아본 KVC (Key Value Coding)에서 key값으로 프로퍼티에 접근하지만 또다른 방법으로 KeyPath를 통해 접근이 가능 // KVC에서 Key값으로 접근하는 방법 class Person: NSObject { // NSObject 서브클래싱 @objc var name: String? // @objc 어노테이션 } // KVC ..
Key의 개념 스위프트의 KeyPath, KVC, KVO 자꾸나오는 Key의 개념은? 문자열(Key)를 의미하고 이 key값을 통해 인스턴스의 프로퍼티 값(Value)에 간접적으로 접근하게 해주는 Objective-C에서 나온 개념 KVC (Key Value Coding) 인스턴스의 프로퍼티에 접근할 때 key값인 문자열로 접근하는 방법 KVC는 Objective-C 런타임에 의존하므로 프로퍼티 앞에 @objc 어노테이션을 붙여서 사용 단, Objective-C의 것이기 때문에 NSObject가 가지고 있으므로 NSObject의 서브클래스여야 가능 KVC 예제 KVC를 사용하기위해서 NSObject를 서브클래싱하고 @objc를 붙인 모델 정의 class Person: NSObject { // NSObje..