iOS
-
UIKit과 DispatchQueue.main의 관계 / 실제 예시를 통해 알아보기iOS/UIKit 2021. 12. 26. 23:41
InfoView - shadowLayer - StackView - textLabel - tagLabel - descriptionLabel 위와 같은 계층 구조를 갖고 있는 InfoView가 있다. 초기 화면 구성시 동작 순서는 다음과 같다. 1. API를 통해 받아온 데이터를 InfoView에 대입해준다. 2. 데이터를 대입해줌에 따라서, StackView의 크기가 바뀔 것이다. 3. InfoView의 bound에 맞춰서 shadow를 적용하는 updateShadow() 메서드가 실행된다. 그러나 왼쪽 화면과 같이 bounds가 제대로 계산되지 않고 shadow가 적용된 것을 볼 수 있다. 각 함수들에 `height`을 출력하는 프린트문을 넣어서 디버깅 해보면 결과는 아래와 같다. public func ..
-
[맥주] 맥주 추천 어플 만들기(0) - 준비iOS 2021. 12. 23. 20:22
Device : 2021 M1 Macbook pro OS : macOS Monterey 12.1 Xcode : Version 13.1 (13A1030d) 이번에는 맥주 API를 이용해서 맥주 추천 어플을 만들어보려고 합니다. 결과물 예시는 아래와 같습니다. 준비물 Pods SwiftLint - 코드 규칙을 검사해주는 라이브러리. 이번 프로젝트는 Code convention을 지켜가며 코드를 작성해보기 위해서 Alamofire - 맥주 API 서버와 통신을 위한 라이브러리 SnapKit - 모든 UI를 Code로만 구현할 예정인데, 이때 constraint를 쉽게 작성하기 위한 라이브러리 맥주 API 사이트 Punk API 프로젝트 설정 Without Storyboard 처음이신 분은 Storyboard없..
-
[TMDB] CollectionView 레이아웃 만들기iOS 2021. 12. 23. 00:30
이전 글에 이어서, 왼쪽과 같이 만들기 위해서, 일단 레이아웃부터 잡아놨습니다. 초콜릿같네요.. navigationItem.titleView에 SearchBar을 넣고, 회색으로 된 부분은 collectionView의 Header부분입니다. collectionViewCell들의 Height을 safeArea를 기준으로 4등분한 크기로 설정하기 위해서, safeArea의 크기가 확정되어야만 했습니다. 그렇기에 collectionViewFlowLayout을 설정하는 코드를 viewDidLayoutSubviews()에 넣어주었다. viewDidLayoutSubviews 알아보기 를 통해서 자세한 내용을 공부할 수 있습니다 import UIKit class CollectionViewPractice: UIView..
-
[TMDB] API를 활용해 드라마 검색 어플 만들기 - 준비iOS 2021. 12. 22. 01:15
안녕하세요! miniOS입니다. 이번에는 TMDB(The Movie Database) API를 활용해서 드라마 정보를 검색하는 어플을 만들어 보려고 합니다. 🎯 참고 현재 듣고있는 교육(SeSAC)의 과제입니다. 스스로 구현 과정을 정리하기 위해 작성된 글입니다. 모든 UI를 코드를 통해서 작성합니다. MVVM 아키텍처를 처음 연습하는 프로젝트입니다. 구조가 부실할 수 있습니다. 준비 API TMDB 사이트에 들어가 회원가입을 진행합니다. 가입 후, 설정 > API에 들어가 API Key를 발급받습니다. 발급을 받을 때, 승인받는 형태가 아니라 편하게 폼을 작성해도 됩니다. TMDB API 사이트에서 여러가지 API에 대한 문서를 확인할 수 있습니다. 오른쪽에 있는 메뉴가 모두 TMDB API 목록입니다..
-
간단하게 URLSessioniOS 2021. 12. 21. 16:58
URLSession Session과 Task를 용도에 맞춰서 조합해 사용을 한다. URLSession.shared.dataTask() URLSession(configuration: .default).downloadTask() ... Session 단일 host에 가능한 최대연결개수, cellular 사용가능여부, 등과 같은 연결에 대한 정의를 하는 객체이다. 종류 Shared → Configuration이 존재하지 않아, 기본적이고 간단한 요청에 적합하다. Defualt → Shared와 비슷하지만, Configuration이 존재한다. Data를 축적해나가며 수신하는 delegate와 같은 동작을 구현할 수 있다. Ephemeral → 역시 Shared와 비슷하지만, cache, cookies, cre..
-
[Rxswift] 03.SubjectsiOS/RxSwift 2021. 12. 19. 21:03
이 게시글은 raywenderlich, RxSwift: Reactive Programming with Swift 책을 참고하여 작성한 글입니다. observerble은 RxSwift에서 필수적이지만, read-only이다. 할 수 있는것은, subscribe하고 그들이 생산하는 새로운 event를 알림받는것이다. observable과 observer의 역할을 모두 할 수 있는 것이 있는데, 바로 Subject 이다. 소개 example(of: "PublishSubject") { let subject = PublishSubject() // 1 subject.on(.next("Is anyone listening?")) // 2 let subscriptionOne = subject .subscribe(onNe..
-
[RxSwift] 02.Observables / rawiOS/RxSwift 2021. 12. 19. 01:17
What is an observable? *Observable* 은 Rx의 심장과도 같다. "observable", "observable sequence", "sequence"라고 Rx에서 서로 다른이름으로 불리는 것을 볼 수 있는데, 사실은 모두 같은 것이다. 때로는 다른 Rx 언어를 개발하던 사람이 "stream"이라고 불르는 경우가 있다. 사실 이것 또한 같은 것이다. RxSwift에서는 단 하나의 단어로 칭하는데, 바로 *Sequence* 이다. 결국 *Observable* 이란 sequence인데, 특별한 능력을 가진 sequence이다. 그 능력은 바로 *asynchronous* 이다. Observable은 시간의 흐름에 따라서 event를 생산하는데, 이것을 emtting이라고 부른다. Ob..
-
[RxSwift] 01.Fundamental / rawiOS/RxSwift 2021. 12. 19. 01:13
이 게시글은 raywenderlich, RxSwift: Reactive Programming with Swift 책을 참고하여 작성한 글입니다. *RxSwift, in its essence, simplifies developing asynchronous programs by allowing your code to react to new data and process it in a sequential, isolated manner*. RxSwift는 asynchronous programming 을 단순화해준다. 다른 여러가지 방법들 NotificationCenter delegate pattern Grand Centeral Dispatch Closure Foundation of RxSwift Observab..