본문 바로가기

학습 노트/iOS (2021)

(96)
123. Status Bar and Home Indicator Status Bar Status Bar는 화면 상단에서 현재 시간과 시스템 상태를 표시하는 역할을 한다. Status Bar에 표시되는 내용은 기본적으로 검은색을 표시하도록 되어있고, 어두운 배경에서는 흰색으로 표시되도록 Status Bar Style을 직접 설정해야 한다. Status Bar Style은 두 가지로 고정되어있고, 색을 직접 지정하는 것은 불가능하다. 이를 설정하기 위해서는 앱에서 공통적으로 사용할 Style을 설정하거나, View Controller에서 사용할 Style을 개별적으로 설정한다. 사용할 Scene은 위와 같다. 현재 상태의 Status Bar가 기본 스타일이다. Project의 Deployment Info 중 Status Bar Style을 통해 앱 전체에 공통으로 적용되..
119 ~ 122. Adaptive Segue, Interacting with Segue, Unwind Segue and Custom Segue Adaptive Segue Segue는 Storyboard에서 두 Scene을 연결하고, 생성과 전환을 처리한다. Segue로 연결된 두 Scene은 각각 Source와 Destination의 관계가 형성된다. 둘을 실전으로 연결되고, 화살표는 흐름을 표현한다. 그리고 Segue의 중앙에는 종류를 나타내는 아이콘이 표시된다. Segue를 연결할 때는 Button이나 Cell처럼 Tab으로 선택할 수 있는 Control과 연결한다. 이러한 Control을 Segue Trigger라고 부른다. Trigger에서 이벤트가 발생하면 Transition Seguence가 시작된다. 첫 번째로 shouldPerformSegue 메서드가 호출된다. 해당 메소드에서 true를 반환하면 Segue 객체가 생성되고, De..
118. Storyboard & Storyboard Reference Storyboard Storyboard는 단일 파일에서 다수의 화면을 구성할 수 있는 View Controller Graph 편집 도구이다. Storyboard 이전에는 View Controller와 연관된 개별 Interface 파일을 생성했다. 이러한 파일을 Nib 파일이라고 부른다. 파일 내에서 단일 화면만 구성하기 때문에 파일 구조가 단순하고 크기가 작다. 그렇기 때문에 Interface Builder에서 지연 없이 편집할 수 있고, 하위 호환성이 높다. 반면에 화면의 흐름을 한 번에 파악하기어렵고, 다른 화면으로 이동하는 코드를 직접 작성해야 한다. Storyboard는 단일 파일 내에서 View Controller와 연관된 Interface 파일을 구성하고, 화면 흐름에 따라 연결한다. App..
116 ~ 117. Split View Controller and Split View Controller Customizing. Split View Controller Split View Controller는 화면을 분할해서 두 개의 View Controller를 함께 표시하는 Container View Controller이다. 왼쪽을 Master View Controller(iOS 13), Primary View Controller 오른쪽을 Detail View Controller(iOS 13), Secondary View Controller라고 부른다. 이전에 배운 다른 Container View Controller와 다르게 Child View Controller의 수가 둘이다. 최초에는 iPad 전용이었지만 Adaptive Layout이 도입되며 종류에 상관없이 항상 사용할 수 있게 됐다. iPad와 iPhone의 Lands..
114 ~ 115. Tab Bar Controller and Tab Bar Controller Customizing Tab Bar Controller Tab UI를 구현할 때 사용한다. Tab Bar Controller는 광범위하게 사용되고 있는 Controller이다. Tab Bar Controller는 화면 하단의 Tab Bar에는 가지고 있는 Child의 수만큼 Tab Bar Item이 표시된다. 해당 Item을 선택하면 나머지 공간에 각각에 해당되는 Child가 표시된다. Tab Bar에 표시할 수 있는 Item의 수는 iPhone Portrait에서 5개 까지이고, 이를 초과하면 More Item으로 이를 축약되고, 해당 Item을 선택하면 나머지를 선택하거나 순서를 변경할 수 있는 More Navigation이 표시된다. 모든 Child는 연관된 Tab Bar Item을 가지고 있다. Tab Bar Item..
110 ~ 113. Navigation Controller, Navigation Item & Navigation Bar, Customizing Navigation Controller and Toolbar Navigation Controller Navigation Controller는 가장 광범위하게 사용하는 Controller로, iOS 설정 앱이 Navigation controler를 사용한 대표적이 예라고 할 수 있다. Navigation Controller에서 원하는 항목을 선택하면 새로운 화면이 오른쪽에서 왼쪽으로 전환된다. 이런 전환 효과를 Push라고 부른다. 좌측 상단의 돌아가기 버튼을 누르면 이전의 화면이 왼쪽에서 오른쪽으로 전환된다. 이런 전환 효과를 Pop이라고 부른다. Navigation Controller는 항상 Push와 pop으로 화면을 전환한다. Navigation Controller는 Container Controll View에 해당한다. 따라서 실제 컨텐츠를 표현하는 Chi..
108 ~ 109. Orientation, Rotation and Container View Controller Orientation and Rotation iOS는 홈버튼의 위치에 따라서 Device Orientation을 7가지로 구별한다. Portrait 홈버튼이 아래쪽에 위치하는 가장 기본적인 상태이다. Portrait Upside Down 홈버튼이 위쪽에 위치하는 상태이다. Landscape Left 홈버튼이 왼쪽에 위치하는 상태이다. Landscape Right 홈버튼이 오른쪽에 위치하는 상태이다. Face Up 홈버튼이 하늘을 향하는 상태이다. Face Down 홈버튼이 바닥을 향하는 상태이다. Unknown iOS가 Device Orientation을 인식할 수 없는 상태이다. Interface Orientation은 앱이 지원하는 논리적 Orientation이다. 기본적으로 아이패드는 모든 Orie..
105 ~ 107. View Controller, View Management and View Controller Life Cycle View Controller View Controller는 다음의 3가지 역할을 수행한다. 화면에 표시되는 View를 관리한다. 모든 View Controller는 하나의 Root View를 가진다. Root View는 UI를 표시할 Frame을 제공하고, View 계층을 관리한다. 따라서 화면을 구성하는 모든 View는 항상 Root View 아래에 존재한다. Root View에 접근할 때에는 view 속성을 사용한다. Root View 이하에 있는 View에 접근할 때에는 Outlet으로 연결하거나 View Tagging을 사용한다. View에서 발생하는 이벤트를 처리한다. 예를 들어 Button에서 발생한 이벤트는 Controller와 연결해 Action으로 처리한다. Table View의 Data..
103 ~ 104. Reordering Items, Cell Prefetching & Data Prefetching and Refresh Control Reordering Item Collection View는 별도의 편집 모드를 제공하지 않는다. 따라서 Table View와 같은 Reordering Control을 제공하지 않는다. 대신 Pan Gesture를 사용해 이를 구현한다. 셀을 이동시키는 기능과 애니메이션은 이미 구현되어있지만 이동시킬 셀과 Panning 제스처를 추적하는 부분은 직접 구현해야 한다. extension ...: UICollectionViewDataSource { } 먼저 Delegate 메소드를 현하고 Reordering 기능을 활성화시킨다. 해당하는 메소드는 UICollectionViewDataSource 프로토콜에 구현되어있다. 또 다른 방법은 Pan gestureRecognizer를 Collection View와 연결하..
101 ~ 102. Managing the Selection and Edit Rows and Section Managing the Selection // // ManagingSectionViewController.swift // CollectionViewPractice // // Created by Martin.Q on 2021/10/15. // import UIKit class ManagingSelectionViewController: UIViewController { lazy var list: [MaterialColorDataSource.Color] = {(0...2).map { _ in MaterialColorDataSource.generateSingleSectionData() }.reduce([], +) }() lazy var checkImage: UIImage? = UIImage(systemName:..