구현 내용
- 최신 트렌드 영화 포스터가 임의의로 테이블 헤더뷰에 나온다.
- 테이블 헤더 뷰가 있는 Home 페이지로 다시 올 때마다 포스터가 새로 나온다.
구현 코드
- HeroHeaderUIView.swift 내에 configure 라는 메서드를 선언한다.
- 해당 메서드는 url을 통해 이미지 경로를 받아오고 이를 sd_setImage()로 포스터로 받는다.
import UIKit
class HeroHeaderUIView: UIView {
// MARK: UI Components
private let heroImageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
imageView.clipsToBounds = true
imageView.image = UIImage(named: "poster.jpg")
return imageView
}()
...
public func configure(with model: TitleViewModel) {
guard let url = URL(string: "https://image.tmdb.org/t/p/w500/\(model.posterURL)") else { return }
heroImageView.sd_setImage(with: url, completed: nil)
}
}
- HomeViewController.swift 내에 configureHeroHeaderView() 메서드를 생성한다.
- 해당메서드는 getTrendingMovies 라는 API를 호출하는 메서드를 가져와서 받아온 데이터를 랜덤으로 표기한다.
import UIKit
...
class HomeViewController: UIViewController {
// MARK: Variables
...
private var headerView: HeroHeaderUIView?
...
// MARK: Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
...
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
configureHeroHeaderView()
}
...
private func homeFeedTableHeaderView() {
headerView = HeroHeaderUIView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 450))
homeFeedTable.tableHeaderView = headerView
}
...
private func configureHeroHeaderView() {
APICaller.shared.getTrendingMovies { [weak self] result in
switch result {
case .success(let titles):
let selectedTitle = titles.randomElement()
self?.headerView?.configure(with: TitleViewModel(titleName: selectedTitle?.original_title ?? "", posterURL: selectedTitle?.poster_path ?? "" ))
case .failure(let error):
print(error.localizedDescription)
}
}
}
@objc private func leftBarButtonTapped() {
}
}
...
'iOS > UIKIT' 카테고리의 다른 글
컬렉션 뷰의 아이템을 길게 눌렀을 때, 호출되는 메서드 사용하기 (0) | 2024.07.11 |
---|---|
검색 결과로 나온 영화 포스터를 누르면 상세페이지로 넘어가기 (0) | 2024.07.10 |
webkit을 통해 유튜브 영상의 주소로 영상 틀어보기 (0) | 2024.07.08 |
유튜브에서 제공하는 API를 통해 영화 트레일러 가져오기 (0) | 2024.07.08 |
서치바? 검색창은 어떻게 사용하는가? (0) | 2024.07.05 |