본문 바로가기

Project/NETFLIX13

NETFLIX CLONE 13편 (코어 데이터) ✅ 코어 데이터 적용 코어 데이터 엔티티 생성 DataPersistenceManager 클래스 생성 downloadTitleWith 함수 구현 CollectionViewTableViewCell 이라는 파일 안에서 downloadTitleAt 이라는 함수구현해당 함수는 indexPath를 통해 전달 받은 데이터를 DataPersistenceManager에 전달 DownloadsViewController 안에 테이블뷰 생성  DataPersistenceManager 내에 코어데이터로부터 데이터를 가져오는 fetchingTitlesFromDataBase() 라는 메서드 생성DowloadsViewController 클래스 내에 코어 데이터로부터 데이터를 가져오는 fetchLocalStorageForDownloa.. 2024. 5. 16.
NETFLIX CLONE 12편 (헤더뷰 랜덤기능, 상세 페이지 적용) ✅ 헤더뷰에 랜덤 이미지 넣기 ✅ 업커밍, 서치컨트롤러에 상세 페이지 이동 기능 추가  ✅ 헤더뷰에 랜덤 이미지 넣기 헤더 뷰에 들어갈 이미지를 랜덤으로 뽑기 위한 변수 선언 class HomeViewController: UIViewController { private var randomTrendingMovie: Title? private var headerView: HeroHeaderUIView?  헤더 뷰에 표시할 이미지는 가장 인기 있는 영화로 채운다.  private func configureHeroHeaderView() { APICaller.shared.getTrendingMovies { [weak self] result in .. 2024. 5. 16.
넷플릭스 앱 클론 11편 (영화 상세페이지) ✅ 영화 상세 페이지 제작 상세 페이지 생성상세 페이지에 전달하기 위한 ViewModel 생성 상세 페이지에 데이터를 전달하는 함수 구현데이터 전달을 위한 델리게이트 패턴 적용✅ 영화 상세 페이지 제작 TitlePreviewViewController 파일 생성 Home 화면에서 영화를 누르면 해당 영화에 대한 예고편과 영화 이름 그리고 개요가 나오게 함 import UIKitimport WebKitclass TitlePreviewViewController: UIViewController { private let webView: WKWebView = { let webView = WKWebView() webView.translatesAutoresizingMaskI.. 2024. 5. 16.
NETFLIX CLONE 10편 (유튜브 API 갖고오기) ✅ 유튜브 API 갖고오기 구글 클라우드 플랫폼 웹 사이트에 들어가서 새 프로젝트 생성생성된 프로젝트 내에서 API 키 생성 유튜브 API 사이트에 들어가서 유튜브 Data API 키 생성 생성된 유튜브 API 키와 유튜브 API를 받아올 URL 주소 상수로 선언유튜브 API를 통해 데이터를 받아올 함수 선언 받아온 데이터를 기준으로 데이터 모델 생성 데이터 모델을 기준으로 서버로부터 받아온 데이터 확인  ✅ 유튜브 API 갖고오기 구글 클라우드 플랫폼 사이트 방문프로젝트 생성 https://console.cloud.google.com/welcome?project=netflix-416515 Google 클라우드 플랫폼로그인 Google 클라우드 플랫폼으로 이동accounts.google.com 생성된 프.. 2024. 5. 14.
NETFLIX CLONE 9편 (Search) ✅ 서치바 설정 서치바 설정으로 원하는 데이터 검색  SearchController 설정 네비게이션 타이틀 설정 import UIKitclass SearchViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .systemBackground title = "Search" navigationController?.navigationBar.prefersLargeTitles = true navigationController?.navigationItem.largeTitleDisplayMode =.. 2024. 5. 11.
NETFLIX CLONE 8편 (업커밍 관련 뷰 생성) ✅ Upcoming 섹션 설정 먼저 Upcoming 영화 목록을 불러올 테이블을 선언테이블을 사용하기 위한 대리자 선언 테이블 셀에 들어갈 테이블뷰 셀을 선언이떄 서버로부터 API를 받아와 데이터를 받아오는 함수를 선언UpcomingController 에서 받아온 데이터를 셀로 전달한다. (대리자 부분)그럼 끝 ✅ Upcoming 섹션 설정 네비게이션 타이틀 설정import UIKitclass UpcomingViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .systemBackground title = "U.. 2024. 5. 9.
NETFLIX CLONE 7편 (오픈소스 SDWebImage, 컬렉션뷰셀 적용) ✅ 오픈 소스 SDWebImage 적용✅ 테이블 뷰에 들어가 있는 컬렉션뷰에 포스터 이미지 적용TitleCollectionViewCell 이라는 컬렉션뷰의 셀에 들어갈 이미지를 적용한 파일을 생성 configure 메서드에서 TMDB에서 얻어오는 이미지 주소를 posterImageView에 적용CollectionViewTableViewCell 클래스 내에 configure 메서드를 통해 titles라는 배열에 데이터를 넣고 collectionView를 새로고침한다CollectionViewTableViewCell 의 configure 메서드를 홈뷰컨트롤러에서 호출 ✅ 오픈 소스 SDWebImage 적용오픈 소스 사이트를 통해 Xcode -> AddPackage 적용https://github.com/SDWe.. 2024. 5. 8.
NETFLIX CLONE 6편 (String 기능 확장, 섹션별 함수 생성) ✅ Extensions를 통해 String 타입 기능 확장✅ 각 섹션별 함수 생성 ✅ Extensions를 통해 String 타입 기능 확장Resource 폴더 내에 Extensions 파일 생성 String 타입의 데이터를 첫 번째는 대문자, 나머지는 소문자로 설정되게 코드 구현 import Foundationextension String { func capitalizeFirstLetters() -> String { return self.prefix(1).uppercased() + self.lowercased().dropFirst() }}  홈뷰컨트롤러의 extension 부분에 위에 정의한 함수를 호출 // 각 셀의 머리말 폰트 적용func tableView(_ tabl.. 2024. 5. 8.
NETFLIX CLONE 5편 (TMDB 사이트 방문, 데이터 모델 구축) ✅ TMDB 사이트 방문✅ TMDB 사이트에서 API를 호출하는 함수 구현✅ 함수로 불러온 정보를 토대로 데이터모델 구축  ✅ TMDB 사이트 방문회원가입 후 개인 설정 -> API 부분의 값 확인 Managers 폴더 내에 APICaller 이라는 이름의 swift 파일 생성 import Foundationstruct Constants { static let API_KEY = "678025f9b853729922748d16feb442f9"}class APICaller { static let shared = APICaller()}  아래 사이트 방문하여 trending 이라는 조건에 대한 결과 확인 https://developer.themoviedb.org/reference/trending-pe.. 2024. 5. 7.
NETFLIX CLONE 4편 (네비게이션 설정, 각 셀의 머리말 설정) ✅ 네비게이션 부분에 좌, 우측에 버튼 설정 (좌측에는 넷플릭스 로고, 우측에는 재생 버튼, 프로필 버튼)✅ 화면을 스크롤 내리면 상단에 있는 네비게이션 컨트롤리 밀려 올라가게 설정✅ 각 셀의 머리말에 글자 설정  ✅ 네비게이션 부분에 좌, 우측에 버튼 설정 (좌측에는 넷플릭스 로고, 우측에는 재생 버튼, 프로필 버튼) 넷플릭스 로고 배경 투명으로 다운로드화면 네비게이션바 버튼으로 넷플릭스 로고 추가 홈뷰컨트롤러 내에 configureNavbar() 함수 선언 override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .systemBackground view.addSubview(homeFeedTable).. 2024. 5. 5.
NETFLIX CLONE 3편 (테이블 헤더 뷰에 이미지, 버튼 할당) ✅ 테이블 헤더 뷰 생성 ✅ 테이블 헤더 뷰에 들어간 이미지에 그라디언트 효과 적용 ✅ 테이블 헤더 뷰에 버튼 2개 선언 ✅ 테이블 헤더 뷰 생성 Views 폴더 내에 UIView 타입의 파일 생성 import UIKitclass HeroHeaderUIView: UIView { // 테이블 헤더 안에 들어갈 이미지 생성 private let heroImageView: UIImageView = { let imageView = UIImageView() imageView.contentMode = .scaleAspectFill imageView.clipsToBounds = true imageView.image = UIImage(named: "h.. 2024. 5. 3.
NETFLIX CLONE 2편 (테이블뷰 선언, 테이블 뷰 셀 내에 컬렉션뷰 삽입) ✅ 홈뷰컨트롤러에 테이블뷰 선언 ✅  컬렉션뷰테이블셀 생성✅  각 테이블 셀에 컬렉션 셀 삽입✅  테이블 헤더 구현   ✅ 홈뷰컨트롤러에 테이블뷰 선언 테이블 뷰 생성 import UIKitclass HomeViewController: UIViewController { // MARK: - 테이블뷰 선언 private let homeFeedTable: UITableView = { let table = UITableView() table.register(UITableViewCell.self, forCellReuseIdentifier: "cell") return table }() override func viewDidLoad() { .. 2024. 5. 3.