iOS/UIKIT 56

컬렉션 뷰의 아이템을 길게 눌렀을 때, 호출되는 메서드 사용하기

구현 내용 컬렉션 뷰의 아이템을 길게 누르면 "Download" 라는 글과 함께 메서드가 호출된다.  구현 코드 해당 컬렉션 뷰의 아이템들은 Home 뷰에 있는 테이블에 등록된 것이다. 해당 컬렉션 뷰 셀이 있는 파일 내에 아래 코드를 추가한다. import UIKitclass CollectionViewTableViewCell: UITableViewCell { ... private func downloadTitleAt(indexPath: IndexPath) { DatePersistenceManager.shared.downloadTitleWith(model: titles[indexPath.row]) { result in switch r..

iOS/UIKIT 2024.07.11

검색 결과로 나온 영화 포스터를 누르면 상세페이지로 넘어가기

구현 내용서치바에 영화를 검색하면 영화검색 결과가 나오고 해당 셀을 누르면 영화 상세페이지로 넘어가게 된다.   구현 코드 SearchViewController SearchResultsViewController 간에 연결을 델리게이트 패턴으로 했다. 프로토콜을 먼저 생성한다. 델리게이트 패턴을 통해 데이터를 전달한다. import UIKitprotocol SearchResultsViewControllerDelegate: AnyObject { func searchResultsViewControllerDidTapItem(_ viewModel: TitlePreviewViewModel)}class SearchResultsViewController: UIViewController { // MA..

iOS/UIKIT 2024.07.10

랜덤으로 영화 표시하기

구현 내용최신 트렌드 영화 포스터가 임의의로 테이블 헤더뷰에 나온다. 테이블 헤더 뷰가 있는 Home 페이지로 다시 올 때마다 포스터가 새로 나온다.  구현 코드  HeroHeaderUIView.swift 내에 configure 라는 메서드를 선언한다. 해당 메서드는 url을 통해 이미지 경로를 받아오고 이를 sd_setImage()로 포스터로 받는다. import UIKitclass HeroHeaderUIView: UIView { // MARK: UI Components private let heroImageView: UIImageView = { let imageView = UIImageView() imageView.contentMode = .scaleAspe..

iOS/UIKIT 2024.07.10

webkit을 통해 유튜브 영상의 주소로 영상 틀어보기

구현 내용Home 화면 내에 보이는 영화 리스트를 누르면 해당 영화에 대한 상세페이지로 넘어간다. 상세 페이지 안에는 영화와 관련된 예고편과 영화 제목, 영화 개요 및 다운로드 버튼이 있다.   구현 코드  상세 페이지 관련한 코드를 담은 TitlePreviewViewController.swift 파일을 생성한다. import UIKitimport WebKitclass TitlePreviewViewController: UIViewController { // MARK: UI Components private let titleLabel: UILabel = { let label = UILabel() label.translatesAutoresizingMaskIntoCo..

iOS/UIKIT 2024.07.08

유튜브에서 제공하는 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 컬렉션을 사용해 정리하기..

iOS/UIKIT 2024.07.08

서치바? 검색창은 어떻게 사용하는가?

구현 내용Search 탭에 서치바 기능을 추가하고 검색 결과를 테이블 + 컬렉션뷰와 혼합하여 보여준다.  구현 순서 UISearchController 타입의 searchController 라는 변수를 선언한다.searchController와 SearchResultsViewController 사이에는 searchController.searchResultsUpdater = self 가 있다. 해당 변수에 결과를 받아서 보여주는 SearchResultsViewController를 생성한다. SearchResultsViewController 내에는 결과 값을 어떤 식으로 보여줄 지 정한다.구현 코드 TMDB 사이트 내 Search -> Multi 부분에 들어가서 API 리퀘스트 함수를 확인한다. https://..

iOS/UIKIT 2024.07.05

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..

iOS/UIKIT 2024.07.05

공공 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) { ..

iOS/UIKIT 2024.07.04

스크롤해서 화면을 내릴 때, 네비게이션 타이틀이 같이 올라가게 하기

구현 내용스크롤해서 화면을 내릴 때 네비게이션 부분을 안보이게 한다. (테이블 뷰에 밀려 올라가게 한다.) 구현 코드extension ~ 부분에 넣었다스크롤 뷰가 스크롤될 때마다 호출되며, 네비게이션 바를 스크롤에 따라 숨기거나 보이게 하는 효과를 준다.// 스크롤 뷰가 스크롤될 때마다 호출되는 델리게이트 메서드이다.func scrollViewDidScroll(_ scrollView: UIScrollView) { // 화면 상단의 안전 영역(주로 상태 바와 노치 영역)의 높이를 가져오는데, // 이는 기기마다 다를 수 있으며, 네비게이션 바의 기본 위치를 결정하는데 사용된다. let defaultOffset = view.safeAreaInsets.top // 현재 스크롤 뷰의 수직..

iOS/UIKIT 2024.07.03

네비게이션 바 버튼에 이미지의 사이즈를 조절하는 방법

구현 내용넷플릭스의 로고의 사이즈가 너무 커서 화면에 왼쪽으로 오는게 아니라 중앙에 온다. 이를 해결하기 위해 이미지 사이즈를 임의의로 줄여서 적용했다.  구현 코드 수정 전 var image = UIImage(named: "logo.png")image = image?.withRenderingMode(.alwaysOriginal)navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: nil) 수정 후 let originalImage = UIImage(named: "logo.png")let scaledSize = CGSize(width: 25, height: 25) // 시스템 버..

iOS/UIKIT 2024.07.03