본문 바로가기

분류 전체보기

(351)
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..
001 ~ 004. Project Creation & Settings, App Icon & Launch Screen (프로젝트 생성과 설정, 앱 아이콘과 런치 스크린) Project Creation (프로젝트 생성) Xcode의 Welcome 화면에서 새 Xcode 프로젝트를 선택한다. 보이지 않는다면 OS X의 상단바에서 Window를 선택후 'Welcome to Xcode'를 선택해 준다. 단축키가 존재하니 외우고 싶다면 외워도 좋다. 해당 화면 없이 OS X의 상단바에서 File>New를 선택 후 'Project'를 선택해도 새 프로젝트를 만들 수 있다. 마찬가지로 단축키가 존재하니 외우고 싶다면 외워도 좋다. 강의는 Xcode 11에서 진행되어 화면 구성이 약간 다르다. Xcode 12 이상에선 template 선택 시 iOS의 App을 선택해 주면 된다. ProductName 단순명사(ex. memo, note, apple 등)를 사용하지 않는다. 접두어나 접..
블로그 사용성 개선 (ver 1.7.5) 서론 아직도 많이 부족한 블로그지만 조금이라도 나아졌으면 해서 부족한 실력을 쥐어 짜 나름의 큰 업데이트를 해 봤다. 기존의 블로그는 모바일, 데스크탑, 태블릿에서 모두 동일한 인터페이스와 사용성을 가졌었다. 아직도 고민이 많이 필요한 부분이지만 태블릿부터 대화면의 장점을 충분히 활용하지 못하는 비효율적인 인터페이스를 가지고 있다고 생각해 조금 바꿔 보기로 했다. 본론 Cols, Row의 이해 이미 해당 부분은 갤러리 게시판의 양식을 만들기 위해 진행했던 부분이지만 역시나 따라만 했을 뿐 정확히 이해하지 못했던 것 같다. 이걸 이해하는데 한참이나 걸려버렸다. mdi-heart {{item.likeCount > 9 ? '9+' : item.likeCount}} mdi-fire {{item.title}} 위..