본문 바로가기

분류 전체보기

(343)
001 ~ 006. Interface Builder, Outlet and Action, Delegate Pattern Interface Builder interface 구성 방법 xib File Storyboard 이전에 사용하던 방식. 모든 씬들이 각각의 파일로 구성됨. 씬들 사이의 관계에 시각적인 도움이 없으며, 화면 전환까지도 코드로 구현해야 함. 화면의 로딩 속도와 편집 속도가 빠름, 협업에 조금 더 적합. Storyboard 하나의 파일 내에 여러 씬들이 존재. 씬들 사이의 관계가 시각적인 표현으로 조금 더 직관적이지만, 씬이 늘어나면 속도가 느려짐. SwiftUI Code로 구성 xib File 방식과 Storyboard는 interfaceBuilder에서 작성한다. Interface Builder & Xcode Outlet and Action Outlet 코드를 통해 속성에 접근할 때 사용하는 연결 방식이다..
012 ~ 019. literal과 datatype Data Type Builtin Data Type integer (정수), floating-point (실수), boolean (참, 거짓), character (문자), string (문자열) 등의 언어에서 미리 제공하는 데이터 타입. Cutom Data Type 그 외의 사용자가 생성해 사용하는 데이터 타입. Memory 0과 1 (2진수)을 저장할 수 있는 반도체. 단위는 Bit부터 YB까지. Bit 0과 1을 저장. Byte Bit * 8 256개의 데이터를 저장(Unsigned : 0 ~ 255, Signed : -128 ~ 127) Data마다 알맞는 메모리 크기가 있다. 예를 들면 Int 자료형은 8Byte의 메모리를 가짐. 표현 범위는 약 -900경 ~ 900경 까지. 이러한 자료형에 일반..
009 ~ 011. 변수와 상수 생성하기, Scope Variable (변수) var variableName = value 변할 수 있는 수. 변수를 만든다 = 변수를 선언한다. Constant (상수) let constantName = value 변수와는 다르게 선언 이후에 변경 불가. TIP 최초엔 상수로 선언하고 필요에 의해 변수로 변경하는 것이 좋다. CamelCase 이름 짓기 UpperCamelCase lowerCamelCase Class Structure Enumeration Extension Protocol variable constant function property parameter method 항상 단어의 첫 문자가 대문자 맨 처음 단어의 첫 문자가 소문자 Scope (선언 범위) //Global Scope func example() ..
025 ~ 027. Dark mode, iPad support and Mac catalyst (다크모드, 아이패드 지원 그리고 맥 카탈리스트) Dark mode 좌측 하단의 Environment Overrides의 Appearance를 통해 시뮬레이터의 다크모드와 라이트모드를 전환할 수 있다. 사진에서와 같이 현재는 다크모드로 전환해도 인터페이스상의 큰 문제는 없다. 이는 앱을 제작 할 때 대부분 기본 컬러들을 사용했기 때문인데, 이 경우 darkmode에 자동으로 대응한다. 단, 셀에서 날짜를 표시하는 레이블들이 기본 색상이 아닌 Custom Color를 사용했는데, 기존에 설정했던 LightGray가 아닌 DarkGrey로 설정하는 경우 다크모드에서 시인성이 매우 안 좋은 것을 확인 할 수 있다. 이렇게 CutomColor를 사용 할 때는 다크모드에 자동으로 대응하지 못하기 때문에 두 가지의 경우를 모두 생각해 적용 할 필요가 있다. 물론,..
022 ~ 024. Memo delete, share and Keyboard Notification (메모 삭제, 공유 그리고 Keyboard Notification) Memo delete (메모 삭제) storyboard 뷰어의 툴바에 버튼을 추가한다. Bar Button은 위와 같이 설정하면, 모양은 쓰레기통으로, 색은 붉은 색으로 바뀐다. Flexible Space Bar Button Item은 위와 같이 버튼과 버튼 사이의 공백을 유동적으로 바꿔준다. 이후 새로 추가한 버튼을 뷰어의 컨트롤러 파일과 Action으로 연결한다. 해당 버튼을 누르면 동작할 시나리오는 삭제 확인 팝업 표시. 확인 버튼과 취소 버튼 표시. 확인 버튼 클릭 시 해당 메모 삭제. 취소 버튼 클릭 시 팝업 닫기. 의 구성이다. 따라서 이전 강의들에서 사용했던 팝업 생성 코드를 그대로 사용한다. // // ViewerViewController.swift // test // // Created ..
001 ~ 008. 기본 용어, 특수문자 Swift Project 생성 시 주의사항 숫자로 시작 불가능 한글 사용 불가능 공백 사용 불가능 경로 문제 발생함 필요시 '_' underscore 사용 일반명사 사용 지양 변수명 충돌, 스토어 등록 불가 가능성 있음 필요시 'my'나 회사 이름을 접두, 접미로 사용하여 해결 용어 설명 token 1 + 2; 위는 4개의 token으로 구성됨 문법적으로 가장 작은 단위. token 사이에 공백을 추가하는 것이 가능하다. space (공백) token을 구분짓는 역할. tab, 줄 바꿈, space 모두 포함 expression (표현식) 실행했을 때 하나의 결과가 나오는(평가 되는) statement (문장) expression이 모여 특정 작업을 수행하는 경우 litteral let x = 7 let..
018 ~ 021. DB, Memo Editing (데이터베이스, 메모 수정) DB (데이터베이스) DB 작성 iOS 앱의 DB는 CoreData를 사용해서 만들어 진다. CoreData는 프로젝트 생성 시에 이미 활성화 해 둔 상태이고, 기본적인 내용 또한 자동으로 추가 된다. 바로 앱 이름의 '.xdatamodeld' 파일이 DB이자 CoreData 파일이다. 해당 파일은 데이터 저장 방식의 설계도 역할을 한다. 좌측 하단의 'Add Entity' 버튼을 툴러 Entity를 생성하고, 컨텐츠와 날짜를 저장 할 Attribute를 각각 생성한다. 최종적으로는 위와 같은 모습이 되어야 하며, Entity의 Attribute Inspector의 'Codegen'이 Class Definition으로 되어 있어야 한다. 이 상태로 빌드를 시도하면 에러가 발생하는데, 임시로 생성해 뒀던 ..
014 ~ 017. Memo Viewer and Data Connection (메모 뷰어, 데이터 연결) 메모 뷰어 위와 같이 새로운 화면이 우측에서 좌측으로 표시되는 걸 Push라고 한다. 또한, 뒤로 가기를 선택했을 때 기존의 화면이 좌측에서 우측으로 사라지고 이전의 화면을 보여주는 것을 Pop이라고 한다. 메모를 선택하면 메모 뷰어를 push 하고, 하단에 toolbar를 추가해 편집과 공유가 가능하도록 한다. 메인 스토리보드에서 라이브러리로 진입해 View Controller를 추가해 새 Scene(씬)을 생성한다. 해당 씬은 메모 뷰어로, 특정 메모를 선택하면 해당 씬으로 전환이 되어야 한다. 따라서 메인 화면의 Cell(셀)과 새 씬은 연결한다. 이후 표시되는 팝업에서 Show를 선택하면 자동으로 Navigation Bar와 뒤로 가기 버튼이 추가된 것을 확인할 수 있다. 이제는 해당 셀에 추가적..
009 ~ 013. Date Format, Write Memo, Cancel, Save (날짜 포맷, 메모 작성, 취소, 저장) Date Format (날짜 포맷) 기존의 TableView에서 표시하던 날짜의 형식은 솔직히 말하면 사용자에게 제공할 만한 정보가 아니다. 불필요한 정보가 포함되어 있고, 시인성이 떨어진다. 따라서 해당 부분을 조금 더 친절하게 바꿀 필요가 있다. class Memo { var content: String var date: Date init(content: String) { self.content date = Date() } static var dummyMemoList = [ Memo(content: "What I daid to you remains like a will.") } override func tableView(_ tableView: UITableView, cellForRowAt indexP..
005 ~ 008. Main Layout, Memo Class, Memo List Main Layout Main.storyboard에는 기본적으로 한 개의 Scene(씬)이 추가되어 있다. 그리고 이 씬은 ViewController 클래스와 연결되어 있다. 그냥 사용해도 괜찮지만 강의에선 해당 씬과 뷰 컨트롤러를 삭제한 상태로 개발을 시작한다. 따라서 해당 씬을 Delete로 삭제하고, 기존의 ViewController.swift 파일도 삭제하고 시작한다. 삭제 후엔 라이브러리를 통해 Navigation Controller를 선택한다. 라이브러리는 'Shift + Cmd + L'로 접근할 수 있다. 이후 엔 두개의 화면이 표시되는데, 좌측은 화면 이동을 담당하는 객체이고, 우측이 실제 화면이 출력되는 Scene이다. 따라서 목록을 표시할 수 있는 Table View Controller..