분류 전체보기 175

[iOS: Toy Project] Chat List

📌 네번째 프로젝트 채팅 리스트 앱을 만들어보자 1️⃣ Data 확인 및 ChatListViewController 만들기 2️⃣ Auto Layout 3️⃣ UICollectionViewCell 만들기 // ChatListCollectionViewCell.swift import UIKit class ChatListCollectionViewCell: UICollectionViewCell { @IBOutlet weak var thumbnail: UIImageView! @IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var chatLabel: UILabel! @IBOutlet weak var dateLabel: UILabel! // Chat.swift 파일에 있..

iOS/Toy project 2022.05.23

[iOS : Toy Project] Stock Rank

📌 세번째 프로젝트 주식 리스트 앱을 만들어보자 1️⃣ CollectionView 2️⃣ Auto Layout 1. 회사 로고 이미지 상단에 회사 이름 Label 맞추기 - label을 image view와의 관계에서 top을 설정 - label을 image view와의 관계에서 horizontal spacing을 설정 : image view와 label 사이의 거리 설정 2. 회사이름과 주가 사이의 관계 - Vertical spacing : 수직 거리 - Leading : 왼쪽 맞추기 3. 등락폭과 주가 사이의 관계 - Horizontal Spacing : 수평 거리 - Center vertical : 같은 높이를 유지 4. 하트 이미지뷰와 Content View 사이의 관계 - Trailing Spa..

iOS/Toy project 2022.05.21

[iOS] UICollectionView 개요

UICollectionView? iOS에서 리스트 및 그리드를 그리는데 사용되는 UIKit으로 UITableView 보다 커스텀이 쉽다 즉, 여러 데이터를 직접 커스텀한 컬럼 혹은 레이아웃으로 나타낼 수 있다. 예를 들면, 갤러리나 인스타그램 Search 탭을 누르면 나오는 그리드 화면! ➰UITableView? 여러 데이터를 싱글 컬럼으로 나열해서 보여주는 뷰! UICollectionView를 표현하는데 필요한 3가지 1. Data : 어떤 데이터를 쓸지? 2. Presentation : 셀을 어떻게 표현할 지? 3. Layout : 셀들의 레이아웃을 어떻게 할 지? ➰ UICollectionView를 이용한 토이프로젝트 https://yexjinitlog.tistory.com/96 [iOS : Toy..

iOS 2022.05.19

[iOS : Toy Project] Simple Weather

📌 두번째 프로젝트 버튼을 클릭할 때 마다 랜덤으로 날씨, 온도, 도시가 바뀌는 앱을 만들어보자 Stack View 속에 또 다른 Stack View! 1️⃣ 레이아웃 구성 - Vertical Stack View 속에 label, Image view, label, Horizontal Stack View (이 속에 또 복합적인 View), Button 2️⃣ View Controller 이름 명확하게 바꾸기 - 기존 view controller 파일 지우고, file > Cocoa Touch Class > "WeatherViewController" 이름의 View Controller 만들기 - Storyboard ID? View Controller을 Storyboard에서 찾을 때 사용하는 ID 3️⃣ 화..

iOS/Toy project 2022.05.17

[iOS : Toy Project] Symbol Roller

📌첫번째 프로젝트 버튼을 클릭할 때 마다 랜덤으로 날씨(=Symbol)이 바뀌는 앱을 만들어보자 1️⃣ 사전에 필요한 다운로드 : SF Symbols 2️⃣ 레이아웃 구성 - Stack View 안에 Image View -> Label -> Button 3️⃣ 기능 구현 코드 // // SymbolRollerViewController.swift // SymbolRoller // // Created by 오예진 on 2022/05/11. // import UIKit // UIViewController = Page를 나타내는 하나의 단위 // UIViewController를 상속받은 SymbolRollerViewController class SymbolRollerViewController: UIViewCon..

iOS/Toy project 2022.05.12

[Algorithm] Python : index 함수의 시간초과 해결법, Dictionary 이용 !

백준의 좌표압축(18870)번 문제를 풀다가 시간초과로 한참 고민함 .. ㅠㅠ 문제는 생각보다 쉬웠다. 해결방법은 1. 입력받을 숫자개수(n)을 입력받고, 2. n개 만큼의 숫자를 list로 받은 후, 3. set으로 중복을 제거하고, 4. sort함수로 정렬한 후, 5. 기존 list로 입력받은 숫자 배열과 sort 함수로 정렬된 배열을 비교하여 index를 출력하면 된다고 생각했다. 근데, 여기서 시간초과가 발생한 것은 "기존 list로 입력받은 숫자 배열과 sort 함수로 정렬된 배열을 비교하여 index를 출력" 하는 부분이었다. 원하는 값의 index를 출력하는 index()함수의 시간 복잡도는 배열의 원소 하나하나를 따져야하기 때문에 O(n)의 시간복잡도를 갖는다. 따라서, 배열의 원소들을 각..

Algorithm/Python 2022.04.01

[Swift] 모나드 : 컨텍스트, 함수객체, 모나드

💡함수형 프로그래밍에서의 모나드? - 순서가 있는 연산을 처리할 때 자주 활용하는 디자인 패턴 💡프로그래밍에서 모나드가 갖춰야 할 조건 1. 타입을 인자로 받는 타입(특정 타입의 값을 포장) 2. 특정 타입의 값을 포장한 것을 반환하는 함수(매서드)가 존재 3. 포장된 값을 변환하여 같은 형태로 포장하는 함수(매서드)가 존재 크게 3가지 개념을 알아보게 될 것이다. 1️⃣ 컨텍스트 2️⃣ 함수객체 3️⃣ 모나드 1️⃣ 컨텍스트 컨텍스트 = 컵 콘텐츠 = 컵 안에 담겨있는 물 즉, 컨텍스트는 어떤 위치에 값이 존재할 수 있는 맥락 이라고 볼 수 있다. 여기서 우리는 Optional 을 쉽게 떠올릴 수 있다. Optional은 값이 있을 수도, 없을 수도 있음!! Optional 모나드 조건 1 만족 : O..

Swift 2022.03.24

[iOS] Xib 파일을 이용한 TableViewCell

TableView에 들어갈 TableViewCell을 만들던 중, Xib 파일을 생성하여 Cell Custom을 해보기로 했다. (뭐 그냥 Xib파일은 어떻게 설정하는건지 공부할겸? 하나의 셀을 세부적으로 확인할 수 있어서 좋았던 듯 하다.) "TableView에 TableViewCell을 어떻게 넣고 화면에 보여주는지"는 따로 정리할 예정이다. 이번 포스팅은 그냥 Xib파일의 등록? 처음에는 그냥 ViewController에서 TableView를 만들고, 아래 캡처 화면을 따라하자. 아래의 설명과 코드들은 ViewController에 속한다 ! 1. "packingTV" 라는 이름의 TableView를 만들기 ( + 코드 설정까지 ) @IBOutlet weak var packingTV: UITableV..

iOS 2022.03.23

[Swift] 맵, 필터, 리듀스

1️⃣ 맵 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수 기존 데이터를 변형하는데 많이 사용 map 매서드를 클로저 표현을 이용하여 간략화하기 let numbers: [Int] = [0, 1, 2, 3, 4] // 기본 클로저의 표현식 사용 var doubleNumbers = numbers.map({(number: Int) -> Int in return number * 2}) // 매개변수 및 반환 타입 생략 doubleNumbers = numbers.map({return $0 * 2}) print(doubleNumbers) // 반환 키워드 생략 doubleNumbers = numbers.map({ $0 * 2}) print(doubleNumbers) // 후행 클..

Swift 2022.03.22

[Swift] 옵셔널 체이닝과 빠른 종료 (guard, assert)

1️⃣ 옵셔널 체이닝? - 옵셔널에 속해있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정이다. - 옵셔널에 값이 있다면 프로퍼티, 메서드, 서브스크립트 등을 호출 - 옵셔널이 nil이라면 프로퍼티, 메서드, 서브스크립트 등은 nil을 반환 - 옵셔널을 반복사용하여 옵셔널이 자전거 체인처럼 서로 꼬리를 물고 있는 모양이기 때문에 옵셔널 체이닝이라고 부른다! 💡물음표(?) - 프로퍼티나 메서드 또는 서브스크립트를 호출하고 싶은 옵셔널 변수나 상수 뒤에 붙임 💡느낌표(!) - 옵셔널에서 값을 강제 추출하는 효과 - 옵셔널에 값이 없다면 런타임 오류가 발생 옵셔널 체이닝 간략하게 알아보기 // 사람의 주소 정보 표현 설계 class Room { va..

Swift 2022.03.20