본문 바로가기

학습 노트

(182)
100. Supplementary View Supplementary View Collection View의 Headr와 Footer를 합쳐서 Supplementary View라고 부른다. Flow Layout에서는 섹션의 시작부분과 마지막 부분에 각각 표시된다. Layout 속성과 Delegate 패턴을 통해 크기를 설정할 수 있지만, 스크롤 방향에 따라 제약을 받는다. Vertical 너비가 Collection View의 너비로 고정되고 높이만 설정할 수 있다. Horizontal 높이가 Collection View의 높이로 고정되고, 너비만 설정할 수 있다. 단, Custom Layout을 직접 적용하면 크기와 위치를 자유롭게 지정할 수 있다. Supplementary View는 재사용 메커니즘을 사용한다. 따라서 필요할 때 Collectio..
097 ~ 099. Collection View, Flow Layout, Collection View Cell and Self Sizing Cell Collection View Collection View를 채용한 가장 좋은 예는 사진 앱이다. Collection은 각각의 Cell로 컨텐츠를 표기하고, Cell들을 묶어 제공할 수 있다. 각각의 그룹을 Section이라고 부른다. Section을 구분하는 Header와 Footer가 존재하며, 이들은 Collection에서 Supplimentary View라고 부른다. 아이패드의 시계 앱도 Collection View를 사용한다. Custom Layout을 통해 위와 같이 개성있는 UI를 구현할 수 있다. Collection View의 배경으로 사용되는 View를 Decoration View라고 부르며, 위의 사진에서는 세계지도가 이에 해당한다. Collection View는 Flow Layout을 ..
091 ~ 096. Reordering Cell, Prefetching API, Table View Controller and Static Cell. Reordering Cell 시계 앱의 편집 모드에서 오른쪽에 표시되는 버튼이다. 드래그를 통해 셀의 순서를 재정의 할 수 있다. // // ReorderingCellViewController.swift // TableViewPractice // // Created by Martin.Q on 2021/10/04. // import UIKit class ReorderingCellViewController: UIViewController { var list1 = [String]() var list2 = [String]() var list3 = ["iMac Pro", "iMac 5K", "Macbook Pro", "iPad Pro", "iPad", "iPad mini", "iPhone 8", "iPhone 8..
087 ~ 090. Edit Mode, Row Action and Swipe Action Edit Mode Edit Control 시계 앱에서 좌상단의 Edit을 터치하면 오른쪽의 편집 모드로 전환된다. 편집 모드에선 셀을 추가하거나 삭제할 수 있고, 순서를 변경할 수도 있다. 셀의 좌측엔 Edit Control이 표시되고, 지금처럼 삭제 버튼이 표시되거나 추가 버튼을 표시할 수 있다. 셀의 우측엔 Reorder Control이 표시되고, 해당 부분을 드래그 하여 원하는 순서로 변경할 수 있다. 편집 모드에서의 작업 종류는 메소드 구현에 의해 결정된다. 삭제 등의 기능을 구현하고자 한다면 연관된 delegate 메서드를 구현해야 하고, 구현하지 않는다면 해당 컨트롤이 표시되지 않는다. Swipe to Delete swipe 하여 표시할 수 있는 삭제 기능은 Swipe to delete라고 부..
081 ~ 086. Customizing Section, Section Index Title, Table Header View, Table Footer View and Managing Selection Customizing Section Custom Header // // CustomSectionViewController.swift // TableViewPractice // // Created by Martin.Q on 2021/09/09. // import UIKit class CustomSectionViewController: UIViewController { @IBOutlet weak var tableView: UITableView! let list = Region.generate() override func viewDidLoad() { super.viewDidLoad() } } extension CustomSectionViewController: UITableViewDataSource { fun..
173 ~ 174. Advanced Topic Availiability Condition API 가용성을 확인하는 방법이다. 새로운 OS가 출시되면 새로운 기능을 위한 API가 추가된다. 매번 최신 API를 사용한다면 좋겠지만 현실적으로 불가능한 경우가 많다. 새 애플리케이션을 생성하면 배포 타깃은 자동으로 최신 버전으로 지정된다. 이 상태로 배포하게 되면 해당 버전보다 낮은 상태의 기기들은 이 앱을 사용할 수 없다. 따라서 최신버전 보다는 2~3 정도 낮은 버전을 타깃으로 설정한다. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. navigati..
170 ~ 172. Selector, Keypath, Dynamic Access Selector (셀렉터) Selector(셀렉터)는 UIkit에서 method를 지칭하거나, 속성의 getter나 setter를 지칭할 때 사용한다. '지칭한다.'의 의미는 호출한다는 의미가 아닌, 대상을 가리키는 특별한 인스턴스를 얻는다는 뜻이다. 이러한 인스턴스는 버튼과 메소드를 연결하거나, 제스쳐와 메소드를 연결할 때 사용한다. Syntax #selector(methodName) #selector(getter: propertyName) #selector(setter: propertyName) struct Figure { let color: UIColor = .blue func draw() { print("draw") } } let selector = #selector(Figure.draw) 결과 ..
162 ~ 169. Error Handling (에러 처리) Error Handling (에러 처리) 에러가 발생하면 보통 프로그램이 종료되지만, 미리 판단하여 처리하게 되면 종료를 막을 수 있다. Compiletime Error & Runtime Error (컴파일 타임 에러와 런타임 에러) 에러는 컴파일타임 에러와 런타임 에러가 있다. 컴파일 타임 에러는 대부분 문법과 관련된 에러로, 컴파일러가 제공하는 정보로 쉽게 해결할 수도 있고, 자동 수정 기능을 제공하기도 한다. 런타임 에러는 프로그램이 실행중인 동안 발생한다. 문법적인 에러가 아닌 기기 상태나, 리소스의 상태 등 여러 이유로 발생할 수 있다. Error Protocol (에러 프로토콜) 에러 처리에 사용되는 에러 형식은 에러 프로토콜을 채용하는 것 만으로 쉽게 구현할 수 있다. 보통은 열거형으로 선언..
159 ~ 161. Generics (제네릭) Generic Function (제네릭 함수) 제네릭을 사용하면 형식에 의존하지 않는 범용 코드를 작성할 수 있다. 코드의 재사용성과 유지보수가 간편해진다는 장점이 있다. func swapInteger(lhs: inout Int, rhs: inout Int) { let tmp = lhs lhs = rhs rhs = tmp } swapInteger(lhs:rhs:) 함수는 두 개의 정수를 받을 경우 의도대로 동작한다. 하지만 정수 형태가 아니라면 에러가 발생한다. 파라미터에 지정된 값의 형태 외엔 전달 받을 수 없기 때문이다. 따라서 같은 형태의 함수를 파라미터 형식을 다르게 하여 여러 개 만들어야 한다. 다만 같은 코드를 중복해 사용했다는 점에서 작업의 불필요한 반복이 늘어나게 된다. 이 문제를 새결할 ..
152 ~ 158. Memory, Value Type and Reference Type (메모리, 값형식과 참조형식) Memory Basics 메모리는 0과 1을 저장하는 반도체이다. 전기가 통하면 1, 전기가 통하지 않으면 0을 저장할 수 있다. Bit 0과 1을 저장할 수 있는 가장 작은 단위를 Bit(비트)라고 부른다. Bit 0 or 1 Byte 비트 8개를 묶어서 Byte(바이트)라고 부른다. 컴퓨터 데이터 처리의 기본 단위로 사용되며, 양수만 저장 할 때는 0^8개의 경우인 0~255까지, 음수와 양수를 동시에 저장하면 -128~127까지의 범위를 저장할 수 있다. Byte MSB LSB 8개의 비트 중 가장 왼쪽의 비트를 MSB(Most Significant Bit)라고 부르며, 가장 오른쪽의 비트를 LSB(Least Significant Bit)라고 부른다. 데이터 저장 방식 Byte의 양수 저장 컴퓨터에..