본문 바로가기

전체 글

(390)
델리게이트 패턴이란? Delegate Pattern 이란? "객체가 자신의 책임을 다른 객체에게 위임(delegate)하는 디자인 패턴"을 의미한다. 예를 들어, 테이블뷰 또는 컬렉션 뷰를 사용할 때 어떤 액션을 취할지에 대한 책임을 뷰컨트롤러에게 UITableViewDelegate 또는 UICollectionViewDelegate를 사용하여 위임한다.  그럼 왜 굳이 "위임"이라는 것을 사용하는 것일까? 애플이 미리 구현해 놓은 UITableView 또는 UICollectionView 등의내부 코드는 비공개이기 때문에 개발자가 이를 알 수 없고, 그렇기에 수정할 수도 없다.  위에서 예를 든 테이블의 셀을 탭했을때, 상황에 맞는 리액션을 개발자가 코드로 작성해야 한다. 하지만 개발자는 애플이 구현해 놓은 내부 코드를 수정할..
webkit을 통해 유튜브 영상의 주소로 영상 틀어보기 구현 내용Home 화면 내에 보이는 영화 리스트를 누르면 해당 영화에 대한 상세페이지로 넘어간다. 상세 페이지 안에는 영화와 관련된 예고편과 영화 제목, 영화 개요 및 다운로드 버튼이 있다.   구현 코드  상세 페이지 관련한 코드를 담은 TitlePreviewViewController.swift 파일을 생성한다. import UIKitimport WebKitclass TitlePreviewViewController: UIViewController { // MARK: UI Components private let titleLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoCo..
유튜브에서 제공하는 API를 통해 영화 트레일러 가져오기 https://www.youtube.com/watch?v=6wL3evhiN5k  구현 내용테이블 + 컬렉션 뷰 내에 나온 영화 셀을 누르면 해당 영화의 트레일러 영상을 유튜브를 통해 볼 수 있다.  구현 코드Google developer console 이라고 검색하여 관련 사이트에 접근한다. 이 사이트에서 프로젝트를 하나 생성하고, 유뷰브 API_KEY를 가져온다.  https://developers.google.com/youtube/v3/docs?apix=true&hl=ko API Reference  |  YouTube Data API  |  Google for Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. API Reference 컬렉션을 사용해 정리하기..
서치바? 검색창은 어떻게 사용하는가? 구현 내용Search 탭에 서치바 기능을 추가하고 검색 결과를 테이블 + 컬렉션뷰와 혼합하여 보여준다.  구현 순서 UISearchController 타입의 searchController 라는 변수를 선언한다.searchController와 SearchResultsViewController 사이에는 searchController.searchResultsUpdater = self 가 있다. 해당 변수에 결과를 받아서 보여주는 SearchResultsViewController를 생성한다. SearchResultsViewController 내에는 결과 값을 어떤 식으로 보여줄 지 정한다.구현 코드 TMDB 사이트 내 Search -> Multi 부분에 들어가서 API 리퀘스트 함수를 확인한다. https://..
API를 통해 가져온 데이터를 테이블 내에 컬렉션뷰 이미지로 넣기 https://explorer89.tistory.com/103 공공 API를 통해 데이터 불러오기 (TMDB)구현 내용TMDB 라는 영화 사이트 내에서 제공하는 API를 통해 외부 데이터를 갖고 왔다. 구현 코드APICaller.swift 라는 클래스 생성한다.import Foundationstruct Constants { static let API_KEY = "개인 API_KEY" static lexplorer89.tistory.com   구현 내용테이블 내 컬렉셔뷰에 API를 통해 얻은 데이터 중에서 이미지를 갖고와 보여준다.  구현 코드TMDB 사이트 내에 API를 받는 개발자 사이트로 들어간다. 각 카테고리 별로 제공하는 API 함수를 받아온다. https://developer.themoviedb..
영어 단어 중에 첫 번째 글자를 대문자로 하고 나머지는 소문자로 처리하는 함수 extension String { func capitalizeFirstLetter() -> String { return self.prefix(1).uppercased() + self.lowercased().dropFirst() }}이 코드는 Swift에서 문자열(String) 타입에 확장을 추가하여 첫 글자를 대문자로 만드는 capitalizeFirstLetter라는 메서드를 정의한것이다.  이 코드는 String 타입에 새로운 기능을 추가하는 확장을 정의한 것으로, 확장을 사용하면 기존 타입에 메서드, 계산된 속성, 서브스크립트 등을 추가할 수 있다. extension String {  이 메서드는 문자열의 첫 글자를 대문자로 변환하고 나머지 글자를 소문자로 변환하여 반환한다.f..
공공 API를 통해 데이터 불러오기 (TMDB) 구현 내용TMDB 라는 영화 사이트 내에서 제공하는 API를 통해 외부 데이터를 갖고 왔다. 구현 코드APICaller.swift 라는 클래스 생성한다.import Foundationstruct Constants { static let API_KEY = "개인 API_KEY" static let baseURL = "https://api.themoviedb.org"}enum APIError: Error { case failedtogetData}class APICaller { static let shared = APICaller() func getTrendingMovies(completion: @escaping (Result) -> Void) { ..
스크롤해서 화면을 내릴 때, 네비게이션 타이틀이 같이 올라가게 하기 구현 내용스크롤해서 화면을 내릴 때 네비게이션 부분을 안보이게 한다. (테이블 뷰에 밀려 올라가게 한다.) 구현 코드extension ~ 부분에 넣었다스크롤 뷰가 스크롤될 때마다 호출되며, 네비게이션 바를 스크롤에 따라 숨기거나 보이게 하는 효과를 준다.// 스크롤 뷰가 스크롤될 때마다 호출되는 델리게이트 메서드이다.func scrollViewDidScroll(_ scrollView: UIScrollView) { // 화면 상단의 안전 영역(주로 상태 바와 노치 영역)의 높이를 가져오는데, // 이는 기기마다 다를 수 있으며, 네비게이션 바의 기본 위치를 결정하는데 사용된다. let defaultOffset = view.safeAreaInsets.top // 현재 스크롤 뷰의 수직..