일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tableView
- 리팩토링
- RxCocoa
- SWIFT
- 리펙터링
- 클린 코드
- Observable
- uitableview
- uiscrollview
- map
- UICollectionView
- Clean Code
- ribs
- UITextView
- collectionview
- ios
- clean architecture
- 애니메이션
- Refactoring
- Human interface guide
- MVVM
- combine
- 리펙토링
- 스위프트
- HIG
- rxswift
- swift documentation
- Xcode
- Protocol
- swiftUI
- Today
- Total
목록ios (1094)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzoeki/btq5HMINWVy/xECkrgim6F4kWPSviRIst0/img.png)
SF Symbol SF Symbol: iOS13+부터 개발자와 디자이너를 위한 도구이며 1500가지가 넘는 symbol set 제공 SF Synbol은 weight와 size의 텍스트에 optical vertical alignment를 자동으로 보장 SF Symbol 특징 small, medium, large 세 가지 스케일로도 제공 앱의 강조 색상을 사용할 수 있는 장점 존재 cloud.sun.rain 강조 -> cloud.sun.rain.fill 커스텀 SF Symbol SF Symbol에서 제공하지 않는 심볼을 직접 만들 수 있는 방법이 존재 링크: https://developer.apple.com/sf-symbols/ 설치 후 앱 진행 * 참고 https://developer.apple.com/d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/H4V9V/btq5FcIcTgh/frZFHdnwasMTcbiCURwisK/img.png)
다크 모드 iOS 13+ 이상에서 시스템 전체 모양을 다크 모드로 선택 가능 배경은 Views, Menu, Control에 비해 더 어두운 팔레트를 사용하고 컨텐츠는 밝은색으로 하여 돋보이도록 표출 시력이 낮은 시각장애인은 대비가 낮은 텍스트를 읽기 힘들기 때문에 다크 모드에서 대비를 증가하는 것이 필요 다크 모드 색상 되도록이면 dynamic system color를 사용: 다크 모드는 동적이므로, pop over나 modal sheet와 같이 인터페이스가 위로 덮을 때 덮는 View의 색상들이 자동으로 (조금 밝게)변경되므로 hard coding 지양하고 dynamic system color 사용 modal 시 덮는 View의 색상 변경: Base -> Elevated dynamic system co..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/30mxL/btq36slCT5u/J4Xgf6q6vNU417l73yhmI1/img.png)
1. iOS 스러운, storyboard 활용 방법 (static prototype cell, segue, gesture) 2. iOS 스러운, storyboard 활용 방법 (dynamic prototype cell, unwind segue, storybaord reference) storyboard 활용 (UI, flow) 목적: code 없이 storyboard만을 이용하여 플로우, UI 구현 code없이 storyboard를 사용하는 이유: 빠른 생산성, 직관성 1번 챕터에서 storyboard로 화면을 빠르게 만들며 prototype을 잡은 후 2번 챕터에서 controller를 통해 데이터 다루는 형식 앱 구현 방식: 디자인, flow prototype -> 로직 구현 프로젝트 플레이어 목록 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/F4OVW/btq3UbMeIfC/n8FIIckvfPN7bsEeyD4ueK/img.png)
Cell에 매핑될 모델 추가 struct CustomCellModel { let leftImage: UIImage let leftTitle: String } Custom Cell 추가 id 정의 class CustomCell: UITableViewCell { static let identifier = "CustomCell" } 나머지 뷰 정의 주의: hugging, compression값 설정 참고 // CustomCell.swift lazy var stackView: UIStackView = { let stackView = UIStackView(arrangedSubviews: [leftImageView, leftLabel, rightButton]) contentView.addSubview(stackVi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1axIu/btq3UHcERfP/WPS3sGquDzQA6xhfdkuNk0/img.png)
StackView에서 사용할 것 distribution은 axis 방향 alignment는 axis 반대 방향 속성 axis alignment distribution 내부 뷰들의 auto layout 설정 StackView 속성 stackView.axis = .horizontal (default) horizontal vertical stackView.alignment = .fill (default) fill: 내부 view들을 stackView.axis의 반대 방향으로 stretch stackView.distribution = .fill (default) fill: 스택뷰 방향쪽으로 남은 공간에 stretch되는 형태 Fill Proportionally: 내부 view들이 intrinsic content..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HmlTN/btq3KdcmEqN/K4O8BuaSzPaM1pW7u2i4kk/img.png)
0) 프로젝트 초기 세팅 1) Todo 앱 구조, LoggedOut RIB 2) Todo 앱 구조 LoggedIn RIB 3) Todo 앱 구조 Rx stream 이전까지 구현된 점 * 정리 - child RIB 생성, DI, attach/detach Child RIB 생성 Parent Router에 Builder 프로퍼티 추가 viewless인 경우: (p)ChildDependency에 ChildViewController가 지정되어 있고, ParentComponent에 VC객체 선언과 init생성자 적용하여 이 값을 주입 (viewless하위에 viewful Child들이 생기는 것을 고려하기위함) Child 의존성 정의 ChildDependency, ChildComponent, parentCompon..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YHpdg/btq3I6qd95N/8TQ0wdtfWa629Jstj3YAjK/img.png)
0) 프로젝트 초기 세팅 1) Todo 앱 구조, LoggedOut RIB 2) Todo 앱 구조 LoggedIn RIB 3) Todo 앱 구조 Rx stream 이전까지 진행된 점 (child RIB 추가) Add new RIB -> parent Router에 새로운 RIB의 Builder를 private let으로 선언, init 적용 Attach ViewFul -> Parent Router에서 나중에 detach시키기 위해 private var childName: ViewalbleRouting 선언, 저장 Viewless LoggedOutViewController 버튼 탭 -> (p) LoggedOutPresentableListenr -> LoggedOutInteractor에서 Login처리 Log..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/niz5n/btq3JBpo5Z5/6rnXyutlEkeoBSicgWAe60/img.png)
MVC 구성 View는 Controller와 상호작용 하지만, Controller의 인터페이스를 알지 못하며 직접 호출하지 않는 구조 MVC끼리의 통신 MVC 애플의 지향: 최소한의 구성 요소만 포함 old MVC의 한계: Massive ViewController, DI 프로그래밍 x, 프로토콜 지향 프로그래밍 x 한계 극복 Delegate, DataSource를 Model에 두고, ViewController 비즈니스 로직을 간소화 Coordinator가 포함된 MVC패턴 MVC의 원칙 Model: 앱의 데이터 네트워크 코드: 네트워크 통신은 되도록 단일 클래스 사용 지속성 코드: DB, Core Data 코드 파싱: codable Manager 클래스 (=Wrapper class) DataSource,..