티스토리

참신러닝 (Fresh-Learning)
검색하기

블로그 홈

참신러닝 (Fresh-Learning)

leechamin.tistory.com/m

이차민의 iOS/ML/DL 공부 블로그 iOS개발과 Computer Vision에 대한 전반적인 공부를 합니다. "Be The First Penguin"

구독자
42
방명록 방문하기
공지 나는 누구인가, résumé 모두보기

주요 글 목록

  • [iOS] UIImage resizing (feat. UIGraphics) UIImage resizing UIImage가 너무 큰 경우 보통은 auto layout을 통해 너비,높이를 잡아주거나 top,leading,trailing,bottom을 주어서 정해진 마진을 지키면서 이미지가 들어가도록 구현한 경험이 있을 것이다. 만약 이미지 자체의 크기를 조절하고 싶다면 위 방법으로는 해결이 되지 않을 것이다. 이에 사용할 수 있는 방식이 이미지 리사이징이다. 이미지 리사이징을 위해 사용되는 방법은 여러가지가 있지만 이번에는 UIGraphicsBeginImageContextWithOptions(_:_:_:)를 사용하는 방식을 알아보자. 간략하게 순서를 먼저 알아보자. UIGraphicsBeginImageContextWithOptions(_:_:_:)로 비트맵 만들기 UIView.dr.. 공감수 2 댓글수 3 2022. 1. 20.
  • [iOS] WWDC16: Understanding Swift Performance 1 WWDC16: Understanding Swift Performance 1 Swift의 여러 타입들 가운데 어떤 타입을 써야할지는 여전히 매번 고민이되는 주제이다. 참조가 필요없으니까 값 타입을 쓰거나, 복사가 필요해서 값 타입을 쓰는 등 보통은 단순한 이유에서 타입을 선택하기도 한다. 이에 본 세션에서는 나름 이유를 가지고 타입을 선택할 수 있도록 도움을 주고 있다. 0. 타입을 선택하는 기준 바로 모델링과 성능을 고려하여 타입을 선택할 것을 이야기하고 있는 것이다. 이번에는 모델링은 제쳐놓고 성능에 대해서만 이야기를 나눠본다. 주로 이야기 할 부분은 총 세 가지로 나뉜다. Allocation 메모리 할당에 관한 부분 Reference Counting 참조 관리에 관한 부분 Method Dispatch.. 공감수 1 댓글수 0 2022. 1. 18.
  • [iOS] Modern Collection View - Grid 구현 Modern Collection View - Grid 구현 앞선 글([iOS] Modern Collection View - List 구현)에서는 collection View를 활용하여 list 형태의 뷰를 구현하는 방식을 봤었다. 이제는 원래 collection View의 목적이라고도 할 수 있는(?) grid(격자)형태의 뷰를 구성해보자. (List 형태를 구현할 때와 코드가 거의 유사하니 이전 글을 참고해도 좋을 것 같다.) 이 또한 iOS 14이후의 버전에 대해 지원해주는 modern한 구현 방식이 있는데, 이를 알아보기 전에 기존 방식으로는 어떻게 구현했는지 살펴보자. 기존 collectionView 구현 방식 우선 그릴 화면을 먼저 보자. 가장 흔히 볼 수 있는 grid 형태의 뷰이다. 이를 구.. 공감수 0 댓글수 0 2022. 1. 14.
  • [iOS] Modern Collection View - List 구현 Modern Collection View 구현 iOS 14 이후부터 지원하는 기능으로 이전의 방법과 아예 다른 방식으로 collection view를 만들어주고 있다. 개괄적인 순서를 먼저 보고 하나 하나 예제 코드를 통해 살펴보자! 이번에는 List 형태의 collection view를 만들어 볼 것이다. 위와 같은 뷰를 보면 "테이블뷰로 만들었네!"라고도 할 수 있지만 collection view로도 동일한 뷰를 만들 수 있다. 이제 modern하게 collection view를 list 형식을 차근차근 살펴보자. (전체 코드는 맨 아래에서 확인 가능하다) 순서 1. CollectionView 만들기 (List) 2. CollectionViewListCell 생성 2-1. UIConfiguration.. 공감수 1 댓글수 1 2022. 1. 12.
  • [iOS] URLSession Completion Handler와 Delegate URLSession Completion Handler와 Delegate 를 활용하여 데이터 받아오는 방법 URL Session을 통해 data task를 생성하고 메모리에 직접적으로 데이터를 받아보자. 서버와 자그마한 상호작용을 위해서는 URLSessionDataTask 클래스를 사용하여 메모리에 response data를 받을 수 있다. 만약 데이터를 파일 시스템에 다운로드 받아야 한다면, URLSessionDownloadTask를 사용하면 된다. data task는 웹 서비스를 호출할 때 이상적인 방법이다. task를 생성하기 위해 URL session 인스턴스를 사용하게 된다. 만약 간단한 경우라면 URLSession 클래스의 shared 인스턴스를 사용할 수 있다. 만약 delegate의 콜백을 .. 공감수 1 댓글수 0 2022. 1. 4.
  • [iOS] Dynamic Type에 따른 AutoLayout 조정하기 (feat. WWDC 2017) WWDC 2017 Building Apps with Dynamic Type를 보다가 마침 현재 프로젝트에도 있는 문제가 있어서 적용 가능해보이는 부분을 발견했다. 바로 UILabel이 나란히 2개 있는 상황에서 기기의 폰트 크기가 커짐에 따라 어떻게 레이아웃을 잡아야하는지에 대한 내용이었다. 당연히 텍스트 일부가 ...등으로 짤리면 안되고, 뭔가 텍스트의 줄바꿈이 이상하게 되어있어도 안된다고 이야기하고 있다. 딱 봐도 이상해보이긴 한다... 그래서 권장하는 방식은 텍스트 크기가 커졌을 때, 우측 UILabel을 좌측 UILabel 아래로 내리는 방법이다! WWDC에서는 아래와 같은 방법으로 구현할 수 있다고 이야기하고 있다. 우측 UILabel의 firstBaseline을 좌측 UILabel lastBa.. 공감수 0 댓글수 0 2021. 12. 17.
  • [Design Pattern] Factory Pattern과 Abstract Factory Pattern Factory Pattern Factory pattern이라는 말 그 자체로 객체를 생성해주는 역할을 한다. Factory pattern의 정의는 다음과 같다. 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브 클래스에서 결정하게 만드는 패턴이다. 즉 객체를 통해 인스턴스를 만드는 것이 아니라 Factory method를 통해 인스턴스를 생성하고 사용하게 되는 것이다. 어떤 과정으로 인스턴스가 생성되는지 그 과정에서 알아야 하는 세부 사항들을 줄여주는 효과가 있다. 예를 들어 storyboard를 기반으로 View Controller의 인스턴스를 만들려고 할 때 알아야 하는 값이 두 가지 있다. 바로 storyboard의 name과 identifier이다. 매번 Vie.. 공감수 0 댓글수 0 2021. 12. 14.
  • [iOS] Delegation 재정복하기 (feat. 야곰 아카데미) 본 게시글은 야곰 아카데미의 Coda가 제공한 실험실 콘텐츠를 학습하며 얻은 지식과 경험을 정리한 글 입니다. Thanks for Coda!!🙇🏻‍♂️🙏🏻 오랜만에 블로그에 글을 남겨봅니다~! (아카데미에서 공부하느라... 블로그가 뒷전이 되었네요... 블로그에만 올리지 않고 github에는 TIL로 매일 정리하고 있습니다!) 각설하고 Delegation에 대해서 알아봅시다! 1. Delegation이란? Delegation이란 무엇일까? 뭔가 익숙한듯 익숙하지 않은 단어.... 여기저기서 delegation pattern, delegate pattern이라는 말을 들어봤을 것이다. 답은 항상 단어의 뜻에 있다. 단어의 뜻을 알아보자. "위임"이라는 뜻이 현재 문맥에서는 적합한 것 같다. 그렇다면 무엇을.. 공감수 1 댓글수 2 2021. 11. 13.
  • [Swift] wholeNumberValue 란? 문자열를 정수형으로? ( String -> Int ) 알고리즘 문제를 풀다보면 Character나 String을 Int로 변환시켜야 하는 순간을 마주하게 된다. 이 때 가장 보편적인 방법으로는 Int()로 감싸서 값을 변환시키는 것이다. let numbString: String = "2" let numb = Int(numbString) print(numb) // Optional(2) // optional 형태로 반환되기 때문에 보통 옵셔널 바인딩을 하여 사용한다. if let n = Int(numbString) { // Int가 된 n을 활용하면 됨! } 다만 이 경우 주의해야할 점이 있는데 String 형일 때만 Int( )를 바로 씌울 수 있다는 것이다. numbString이 Character인 경우.. 공감수 0 댓글수 0 2021. 10. 4.
  • [iOS] URLSession을 활용한 비동기 프로그래밍 (with. NASA API) URLSession의 구조나 원리, Json 구조, 비동기 프로그래밍에 대해 익숙해지고 싶은 마음과, 더욱 더 잘 활용하고 싶다는 생각에 각종 API들을 활용하여 데이터를 받아와 비동기적으로 처리하는 방법들을 차례대로 학습해보고자 합니다! 어떤 API가 재밌을까 고민하던 찰나에, NASA에서 매일 우주 사진과, 이에 대한 설명을 제공하는 API를 무료로 사용할 수 있다고 하여서 이를 바로 선택해서 진행했습니다! 대략 어떤 플로우로 진행될지 간략하게 보고 바로 시작해봅시다! --------사전 준비-------- 1. NASA Open API : key 발급 2. Json 구조 확인 ---------XCode--------- 3. 데이터 모델 정의 4. API Service 구현 (URLSession) 5.. 공감수 3 댓글수 0 2021. 9. 9.
  • [Swift] ARC (Automatic Reference Counting) ARC (Automatic Reference Counting) Swift는 ARC를 사용하여 앱의 메모리 사용을 관리하고 추적한다. 대부분의 경우, Swift에서 메모리 관리란 "그냥 되는 것" 정도이고, 메모리 관리를 위해 별도로 생각할 필요가 없다. 왜냐하면 ARC가 자동적으로 쓸모가 없어진 클래스 인스턴스를 메모리에서 지워버리기 때문이다! 하지만, 몇몇 경우에 ARC는 메모리를 관리하기 위한 코드들 간의 관계에 대한 더 많은 정보를 요구하기도 한다. 이번 장에서는 ARC가 모든 앱의 메모리를 관리할 수 있도록 하는 것을 보여줄 것이다. 레퍼런스 카운팅(Reference counting)은 클래스의 인스턴스에게만 적용된다. 구조체나 열거형은 참조 타입이 아닌 값 타입이기 때문에 참조에 의해 저장되거나.. 공감수 2 댓글수 1 2021. 8. 26.
  • [Swift] Access Control Access Control 접근 제어(Access Control)는 다른 소스 파일(source file)이나 모듈(module)에서 오는 코드와 우리의 코드 간에 접근을 제한을 할 수 있는 기능이다. 이러한 특성을 통해 코드의 상세 구현부를 숨길 수 있고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 각 타입 ( class, struct, enum) 혹은 타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브스크립트 등에 특정한 접근 수준(access level)을 할당할 수 있다. 프로토콜은 전역 상수, 변수, 함수처럼 특정 맥락(context)에 의해 제한될 수 있다. 다양한 접근 수준을 제공함과 더불어, Swift는 매번 접근 수준을 명시해주는 수고로움을 덜어주기 위해 기본적으로 접근 수준을.. 공감수 0 댓글수 0 2021. 8. 19.
  • [Swift] Generics Generics Generic 코드는 유연하고, 재사용가능한 함수와 타입을 사용할 수 있게 하여, 어느 타입이건 작업을 수행할 수 있고, 작업자가 정의한 대로 수행할 수 있다. 이를 통해 중복을 방지하고, 의도를 명확하고 추상적으로 표현하는 코드를 작성할 수 있다. Generics는 swift가 지원하는 가장 파워풀한 기능 중 하나이다. 실제로 사용되고 있는지는 보지 못했겠지만, 자주 사용하고 있는 Array나 Dictionary 타입들은 모두 generic collection이다. Array은 Int형으로 만들 수도 있고, String 타입으로 만들 수도 있고 더 나아가 다른 타입으로도 구성할 수 있다. 유사하게 딕셔너리의 경우도 타입을 지정하고 값을 저장할 수 있으며, 그 타입에는 제한이 없다. 즉,.. 공감수 0 댓글수 0 2021. 8. 19.
  • [Swift] Struct VS Class Struct Class type Value type (= call-by-value) Reference type (= call-by-reference) 메모리 할당 공간 Stack Heap 상속 X O deinit X O Struct enum과 같이 값 타입이다. (값의 복사가 일어난다) struct는 stack 메모리 공간에 할당된다 stack 메모리 공간은 "컴파일" 시점에 결정된다. Thread-safe 상속 불가 기본적으로는 reference count로 메모리를 관리하지 않으나, 참조를 포함하는 경우에는 reference count를 사용한다 Class 참조 타입이다. class는 heap 메모리 공간에 할당된다. heap 메모리 공간은 "런타임" 시점에 결정된다. Thread-unsafe ARC.. 공감수 0 댓글수 0 2021. 8. 18.
  • [Swift] split과 components (feat. 문자열 처리) 문자열을 다룰 때 주로 쓰는 메서드들을 살펴보자. Split(separator : ) separator를 인자로 하여 받은 값을 기준으로 대상 문자열을 나눈다. 예를 들어서 "this is a remote controller"를 " "(공백)으로 나눈다고 할 경우 ["this" "is" "a" "remote" "controller"] 를 결과로 얻게 된다. var s = "this is a remote controller" var splited = s.split(separator: " ") print(splited) // ["this" "is" "a" "remote" "controller"] 이렇게 공백을 빼고 반환해준다는게 장점이다. 하지만! [Substring]으로 반환되어 바로 사용하기에는 껄끄러운.. 공감수 1 댓글수 0 2021. 8. 13.
  • [Swift] OOP의 SOLID 원칙 객체 지향 프로그래밍이란? 먼저 작은 문제들을 해결할 수 있는 객체들을 만들고, 이 객체들을 조합하여 큰 문제를 해결하는 방식이다. 좋은 객체 지향 설계를 하게 되면 코드의 재사용, 유지보수의 용이성 등의 장점으로 가져갈 수 있고 개발 기간/비용들을 감축할 수 있다! 항상 코드는 유연하고 확장할 수 있고 유지보수가 용이하고 재사용할 수 있어야 한다. 이러한 OOP 방식을 잘 준수하기 위해 만들어진 것이 SOLID원칙이다. OOP의 SOLID 1. 단일 책임의 원칙 (SRP: Single Responsibility Principle) 하나의 객체는 하나의 책임을 가져야 한다. 즉 하나의 class가 여러 기능을 담당하면 안된다는 것이다. class Search { func searchResult() -> .. 공감수 4 댓글수 0 2021. 8. 13.
  • [Swift] 내가 보려고 정리하는 Optional 지금껏 배웠던 다른 프로그래밍 언어들과 달리 Swift가 가지는 특색이라고도 생각하는 Optional에 대해 간략하게 정리해볼 것이다. Optional의 구조 Optional은 값이 있을 수도 있고, 없을 수 있는 타입이다. 그 내부 구조를 한 번 살펴보자. @frozen enum Optional { case none case some(Wrapped) } @frozen : enum에 더 이상 case를 추가하지 않겠다는 것을 의미 : Generic 타입이다. wrapped이라는 건 말그대로 감싸져있다는 것이기에 이후 사용시 풀어서 사용해줘야 한다. enum 구조이기 때문에 ?를 써서 사용하는 방법과는 다르게 표현할 수 있다. // 값이 있는 경우 let optionalValue: Optional = Op.. 공감수 0 댓글수 0 2021. 8. 10.
  • [iOS] Firebase GoogleService-Info의 파일명 문제 Firebase Realtime Database를 연결하기 위해서는 GoogleService-Info.plist를 다운로드 받고 프로젝트에 추가시켜야 한다. 다만 여러 프로젝트를 진행하면서 .plist들도 여러 번 다운로드 받게 되면 파일의 이름이 바뀌게 된다. 처음에 받을 때는 GoogleService-Info.plist의 파일명이겠지만, 그 이후부터는 GoogleService-Info.plist (1), GoogleService-Info.plist (2)... 이런 식으로 파일명이 중복되지 않게 생성될 것이다. 그대로 프로젝트에 추가하면 당연히 안된다! 기본적으로 AppDelegate에서 실행되는 FirebaseApp.Configure()은 GoogleService-Info.plist를 찾게된다. 하.. 공감수 0 댓글수 0 2021. 7. 30.
  • [iOS] 내가 보려고 쓰는 NotificationCenter 사용법 NotificationCenter를 직역하면 알림센터가 된다. 사실 말 그대로 "알림을 통해 액션을 통제"하는 역할을 한다. 많은 서적, 영상에서 NotificationCenter를 방송국으로 비유하기도 하는데, 그 이유는 차차 읽다보면 알 수 있다. NotificationCenter : 자자 액션이 수행되었으니, 각 담당자들은 업무 수행 바람~ VC1 : 넵 VC2: 네~ VC3: 네! NotificationCenter가 관제탑이 되는 것이고, 각 VC 1,2,3에게 각 업무를 수행해야하는 시점에 말해주는 것이다. (마치 방송국에서 전파를 쏘고, 각 가정집의 TV에서 이를 수신하여 화면을 보여주는 것과 같아서 그렇게 비유하는 듯 하다.) 만약 VC1이 화면에서 사라질 때, VC2의 버튼을 회전시키고 싶.. 공감수 0 댓글수 0 2021. 7. 27.
  • [iOS] viewForHeaderInSection의 주기에 대하여... 테이블뷰의 헤더에 다양한 커스텀 뷰를 추가해본 적이 있을 것이다. ScrollView + PageControl로 이미지 슬라이더를 구현했던 적이 있는데, 전체 뷰의 스크롤을 하단으로 내림에 따라 해당 헤더뷰가 화면에서 사리지게 되고, 다시 올라왔을 때 하나의 문제를 발견할 수 있었다... 예를 들어 이미지 슬라이더의 이미지를 3번째까지 슬라이드 해두고, 뷰를 끝까지 내린 후 다시 헤더로 왔을 때 아이템이 0번째로 이동해있는 문제였다... 이유를 찾아보니... viewForHeaderInSection은 단 한 번 호출되는 것이 아니라 여러 번 호출된다는 것 때문이었다! (여러 번의 조건 = "헤더뷰"가 등장할 때 마다) 즉 이를 고려해서 코드를 구현했어야 했는데, 매번 헤더가 등장할 때 마다 해당 메서드가.. 공감수 0 댓글수 0 2021. 7. 21.
  • [iOS] UITableViewCell내 UIButton 액션이 작동하지 않을 때 (feat. tag/delegate/closure) 아무렇지 않게 tableView의 CustomCell에 UIButton을 넣어주고 addTarget을 하여 액션을 넣어주고 있었다. . . 응??🧐 . . 당연히 cell에 넣어주고 action을 주면 작동을 하리라 생각했으나 되지 않았다..! 바로 검색 시작... 정말 다양한 답변들을 찾아볼 수 있었다. 하지만 모든 방법이 문제를 해결해주지는 못했고...😇 여러 가지 방법을 찾아본 결과... 결론을 먼저 이야기하자면 총 세 가지 방법으로 해결을 할 수 있다. 1. cellForRowAt에서 Button의 tag를 이용하는 방법 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { le.. 공감수 2 댓글수 3 2021. 7. 20.
  • [RealmSwift] Nested-Object value add 팁 (중복 방지, 업데이트 방지) Realm에 Object를 저장할 때 Dictionary혹은 Json 구조처럼 저장하고 싶을 때가 있다. A반 -------- 이름 : 스위프트 | |____ 나이 : 10 | |_______ 이름 :파이썬 |____ 나이: 70 대충 이런 구조..? { "title":"이석원님 작품", "bookList":[ { "title":"2인조", "image": "2인조", "author" : "이석원", "date" : "2021-03-10" }, { "title": "우리가 보낸 가장 긴 밤", "image": "우리가 보낸 가장 긴 밤", "author" : "이석원", "date" : "2021-03-10" } ] } json으로 보면 이런 구조! 1 : .. 공감수 0 댓글수 0 2021. 7. 15.
  • [iOS] UIColorWell로 커스텀 컬러 선택하기 https://developer.apple.com/documentation/uikit/uicolorwell Apple Developer Documentation developer.apple.com 공식 문서에는 짧게 한 줄로 설명되어 있다. 컬러 픽커를 보여주는 화면을 컨트롤한다. 바로 코드와 화면으로 보는게 빠를 것 같다. 우선 UIColorWell을 사용하기 위해서는 버튼을 하나 만들어줘야 한다. let colorPicker = UIColorWell(frame: CGRect(x: 100, y: 100, width: 100, height: 100) frame와 CGRect로 크기를 정해주고 addSubview하게 되면 아래와 같은 아이콘을 볼 수 있다. 해당 아이콘을 클릭하게 되면 색상을 선택할 수 있.. 공감수 0 댓글수 0 2021. 7. 8.
  • [Xcode] Storyboard로 다크모드 대응하기 iOS13에 다크모드 기능이 나오고 난 후 부터 꺼본적이(?) 없는 것 같다. 주변만 봐도 다크모드를 애용하고 있는 것을 보면, 13 이후부터는 다크모드 대응이 필수적이라는 것을 알 수 있다. 1. Asset.xcassets > Accent Color > New Color Set 추가하기 2. Appearances 및 Color 선택 New Color Set을 눌러서 새로운 color set을 추가해준다. 그러면 2개의 색상을 디폴트로 볼 수 있는데 여기서 기본 + 다크모드일 때 색상을 골라주면 된다! 오른쪽 위 inspector를 봐보자. Name : 커스텀 컬러의 이름을 저장 Appearances : 보여줄 조건을 선택 Color : 색상 선택 기본일 때는 검정색, 다크모드일 때는 흰색을 보여주도록 .. 공감수 0 댓글수 0 2021. 6. 30.
  • [iOS] UITextField + UIPickerView UITextField를 클릭하게 되면 보통 키보드가 올라오면서 텍스트를 입력할 수 있게 된다. 키보드가 올라온다는 것은? 커스텀한 입력값을 받을 수 있다는 것이다. 하지만 커스텀한 값을 받는 것이 아니라 정해진 값을 받고 싶다면 어떻게 해야할까?? 드롭다운을 생각할 수도 있지만, 외부 라이브러리가 아닌 UIPickerView를 통해 드롭다운을 구현해보고자 한다. 우선 아래와 같이 UITextField는 만들어져있다고 가정해보자. 한 달에 몇 권이나 읽나요? 이 부분을 커스텀한 값으로 받을 수도 있겠지만 드롭다운 내 값으로만 받아보자. 우선 ViewController 내에 드롭다운으로 선택 가능한 선택지를 만들어줘야 한다. var readbook = ["0권😑","1 ~ 2권","3 ~ 5권", "6 ~ .. 공감수 4 댓글수 0 2021. 6. 7.
  • [Swift] Auto Layout 세 가지 방법 (feat. SnapKit) 뷰(View)를 그릴 때 위치 즉, 레이아웃을 설정하게 되는데, 기기 사이즈가 워낙 다양하다보니 자동으로 기기 환경에 맞게 레이아웃이 변경되도록 하는 것을 오토레이아웃(Auto Layout)이라고 한다. 오토레이아웃을 어떻게 구현할 수 있는지, 그 방법들의 장단점은 무엇인지 하나하나 살펴보자. (아래와 화면을 구성하기 위해 어떻게 레이아웃을 설정할 수 있는지 보자) 1. 일반적인 오토레이아웃 // X버튼 // autolayout 적용을 위해서는 false 설정 필수! closeButton.translatesAutoresizingMaskIntoConstraints = false // view에 추가 self.view.addSubview(closeButton) // autolayout closeButton... 공감수 1 댓글수 0 2021. 4. 7.
  • [Swift] 넷플릭스 화면 따라만들기 (3) 저번까지는 searchAPI를 구현해봤었다. 이제는 클릭 이후에, 영상을 가져오고/틀어주고, 화면전환까지 되도록 구현해보자. 그러기 위해서는 먼저 영상을 갖고 있는 movie라는 객체가 있어야 하고 영상을 틀어줄 playerViewController (player vc)가 있어야 한다. 이후 player vc + movie 로 올려주고, presenting plaver vc를 통해 영상을 재생해준다. // 클릭 되었을 때 구현해줘야 하는 부분 extension SearchViewController: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexP.. 공감수 0 댓글수 0 2020. 9. 20.
  • [Swift] 넷플릭스 화면 따라만들기 (2) 넷플릭스 화면 따라만들기 (2)이전에는 searchBar를 구현했었는데, 이제는 searchTerm을 가지고 검색 API로 검색결과를 받아보는 과정을 구현해 볼 것이다.먼저 어떤 task를 수행해야하는지 나열해보자. [목표] searchTerm을 가지고 네트워킹을 수행하여 영화를 검색해야한다.그러기 위해서는 검색 API가 필요하다.또한 검색 결과를 받아올 모델(Movie), Response가 필요하다.마지막으로 결과를 받아와서, collectionView에 띄워야 한다. 말로는 매우 간단하다... 서버에서 키워드로 검색을하고, 결과를 받아와서, 원하는 정보만 앱 내에 띄워주면 된다는 것이다.백문이불여일견...! 코드로 바로 가보자 import UIKitimport Kingfisher class Searc.. 공감수 0 댓글수 0 2020. 9. 10.
  • [Swift] 넷플릭스 화면 따라만들기 (1) 넷플릭스 화면 따라만들기 (1)(두둥~... 소리가 음성지원 되는 듯하다...) 출근러, 통학러들에게 필수인 넷플릭스 어플! 콘텐츠의 집합체인 넷플릭스를 모르는 사람은 없을 것이다. 사용할 때는 영상을 찾아서 플레이하는 것을 간단하게 생각하였으나, 그 기능을 만들기 위해 필요한 요소들에 대해 학습해볼 것이다. 먼저 넷플릭스를 구성하는 기능들 중 “서치 페이지”와 “플레이어”를 구현해 볼 것이다. 플레이어의 경우 실제 서버에 있는 영상을 스트리밍하여 재생할 수 있도록 해볼 것이다! 먼저 서치 바(searchBar)를 만들어 보자. XCode내 우측 [+] 버튼을 눌러 “search bar”를 검색하여 추가한다.알맞게 가져다 넣은 후, View와 Leading/Trailing/top 오토레이아웃을 해준다.위.. 공감수 0 댓글수 0 2020. 9. 7.
  • [Swift] URLSession이란? (2) URLSession (2)response 받은 데이터를 object로 만들어 볼 것이다.블로그 내의 데이터를 받아와보려고 했으나, 구조가 많이 달라 우선 강의과 같은 조건으로 진행해보자. 우선 기존에 작성했던 것 처럼 urlComponents를 생성한다. let config = URLSessionConfiguration.defaultlet session = URLSession(configuration: config) // URLvar urlComponents = URLComponents(string: "https://itunes.apple.com/search?")!let mediaQuery = URLQueryItem(name: "media", value: "music")let entityQuery = U.. 공감수 0 댓글수 0 2020. 9. 3.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.