본문 바로가기

Project/MovieClip

(54)
📍함수의 역할 -> configure<T: SelfConfiguringTVCell> () { } 🔍 Configure() { }이 함수의 역할은 제네릭을 사용하여 UICollectionView의 셀을 재사용하고, 특정 모델(TvTMDBResult)을 설정private func configure(_ cellType: T.Type, with model: TvTMDBResult, for indexPath: IndexPath) -> T { guard let cell = seriesCollectionView.dequeueReusableCell(withReuseIdentifier: cellType.reuseIdentifier, for: indexPath) as? T else { fatalError("Unable to deque \(cellType)")} cell.configure(with: mod..
🤔 영화 정보를 통합해서 관리할 필요가 있나? ✅ 현재TMDB에서 API를 통해 받아오는 데이터를 관리하는 구조 TvTMDBData & TvTMDBResult 구조체: API를 통해 받아오는 데이터를 직접 관리 TvCombineData 구조체: TvTMDBData를 배열로 통합해서 관리하는 구조체 TvResultItem 구조체: TvTMDBData타입의 데이터와 별도의 섹션을 구분하는 데이터를 관리하는 구조체  영화를 받아오는 정보 외에 다른 부분을 컬렉션뷰에 동일하게 넣되, 레이아웃은 유지하고 싶다면?굳이 데이터 모델을 하나로 통합할 필요가 있나? 즉 섹션마다 다른 데이터 모델을 사용하려면?🌟 해결 방법각 섹션마다 다른 데이터 모델을 사용하려면 다양한 데이터 모델을 포함할 수 있는 enum 타입을 만들어서 활용하면 됩니다. ✅ 데이터 모델 설계e..
✅ hash(into:) 메서드와 == 연산자의 역할 📍 구조체 내 hash, == 메서드struct TvResultItem: Hashable { let tvResult: TvTMDBResult let sectionType: TvSectionType func hash(into hasher: inout Hasher) { // tvResult.id와 sectionType을 조합해서 고유 해시 생성 hasher.combine(tvResult.id) hasher.combine(sectionType) } static func == (lhs: TvResultItem, rhs: TvResultItem) -> Bool { return lhs.tvResult.id == rhs.tvResu..
❌ 문제 발생... UICollectionViewDiffableDataSource.. 데이터 중복으로 인한 데이터 누락 ❌ 문제 발생.... Diffable data source detected an attempt to insert or append 5 item identifiers that already exist in the snapshot. The existing item identifiers will be moved into place instead, but this operation will be more expensive. For best performance, inserted itemidentifiers should always be unique. Set a symbolic breakpoint on BUG_IN_CLIENT_OF_DIFFABLE_DATA_SOURCE__IDENTIFIER_ALREADY_EXIS..
⭐️ 버튼의 애니메이션 효과 주기 ✅ 애니메이션 개선 코드 (Spring 애니메이션 추가) 1️⃣ Spring 애니메이션 적용usingSpringWithDamping: 0.6, initialSpringVelocity: 0.8→ 버튼이 커졌다가 다시 제자리로 돌아오는 스프링 효과 추가 (좀 더 부드러운 효과)2️⃣ 크기 차이를 명확하게 조절scaleX: 1.1 → scaleX: 1.15→ 버튼을 더 눈에 띄게 커지도록 변경하여 눌린 느낌이 확실하게 보이도록 변경3️⃣ 버튼 비활성화 시 alpha 값을 낮춤alpha = 0.7 → alpha = 0.5→ 비활성화된 버튼이 더 흐릿해지면서, 활성화된 버튼이 더욱 강조됨private func updateButtonState() { UIView.animate(withDuration: 0.3,..
🤔 배우의 출연작 조회 (영화, 티비) 🎬 배우 출연작(Credit) 섹션의 구조 정리 및 데이터 흐름 ✅ 전체적인 흐름PeopleDetatilViewController에서 viewDidLoad()에서 API를 호출하여 배우의 영화 및 TV 출연작 데이터를 가져온다.출연작 데이터는 movieCredits, tvCredits 배열에 저장된다.CreditTableViewCell에서 기본적으로 영화(Movie) 출연작을 표시하고, 버튼을 눌러 TV 출연작으로 변경할 수 있다.CreditTableViewCell 내부의 UICollectionView에서 출연작을 수평 스크롤로 표시한다.컬렉션뷰 아이템을 선택하면 해당 작품의 상세페이지(DetailViewController)로 이동한다. ✅ 구현된 주요 로직 정리1. PeopleDetatilViewCo..
🔥 배우의 영어로된 소개글을 한글로 번역하기 📌 Google Translate API를 사용하여 배우 소개글(Biography)을 번역하는 과정 https://cloud.google.com/translate?hl=ko https://cloud.google.com/translate?hl=ko cloud.google.com 🎯 목표TMDB API에서 배우의 정보를 가져오면 영어로 된 biography(소개글)가 기본 제공Google Translate API를 활용해 자동으로 한글 번역된 내용을 UI에 표시번역된 내용을 UITableViewCell (PeopleOverviewTableViewCell) 에 적용 🛠 1. 프로젝트에서 Google Translate API 사용하기Google Translate API를 사용하려면 Google Cloud ..
🤔 배우 프로필의 소개 부분 "더보기" "접기" 기능 구현 📌 배우 프로필에서 ‘더보기’ 기능 구현하기UITableViewCell을 활용하여 배우의 소개글(biography)을 초기에 일정 줄까지만 보이도록 하고,‘더보기’ 버튼을 눌러 전체 내용을 확장하는 기능을 구현하는 방법을 소개 🚀 1. 기능 개요✅ 목표:배우의 biography 내용을 UITableViewCell 내에서 일정 줄(5줄)까지만 표시더보기 버튼을 누르면 전체 내용을 확장 (numberOfLines = 0)접기 버튼을 누르면 다시 줄여서 (numberOfLines = 5) 표시UITableView의 셀 크기를 자동 조정하여 자연스럽게 확장/축소 ✅ 2. PeopleOverviewTableViewCell 구현배우의 biography를 표시하는 UITableViewCell을 만들고, 초기에 5..