diff --git a/Projects/Core/DesignSystem/Resources/Images.xcassets/testImage2.imageset/Contents.json b/Projects/Core/DesignSystem/Resources/Images.xcassets/testImage2.imageset/Contents.json new file mode 100644 index 0000000..23436c9 --- /dev/null +++ b/Projects/Core/DesignSystem/Resources/Images.xcassets/testImage2.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "SP_1920774 3.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/Core/DesignSystem/Resources/Images.xcassets/testImage2.imageset/SP_1920774 3.svg b/Projects/Core/DesignSystem/Resources/Images.xcassets/testImage2.imageset/SP_1920774 3.svg new file mode 100644 index 0000000..4761cd7 --- /dev/null +++ b/Projects/Core/DesignSystem/Resources/Images.xcassets/testImage2.imageset/SP_1920774 3.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Projects/Feature/HomeFeature/Sources/Cell/MoviesCell.swift b/Projects/Feature/HomeFeature/Sources/Cell/MoviesCell.swift index 795a8eb..130d150 100644 --- a/Projects/Feature/HomeFeature/Sources/Cell/MoviesCell.swift +++ b/Projects/Feature/HomeFeature/Sources/Cell/MoviesCell.swift @@ -16,7 +16,6 @@ class MoviesCell: UICollectionViewCell { self.addSubview(moviesImageView) moviesImageView.snp.makeConstraints { $0.edges.equalToSuperview() - } } diff --git a/Projects/Feature/HomeFeature/Sources/HomeViewController.swift b/Projects/Feature/HomeFeature/Sources/HomeViewController.swift index b7afd7f..f1d6bde 100644 --- a/Projects/Feature/HomeFeature/Sources/HomeViewController.swift +++ b/Projects/Feature/HomeFeature/Sources/HomeViewController.swift @@ -11,7 +11,7 @@ var bannerImageSources = [ DesignSystemAsset.Images.testImage.image, DesignSystemAsset.Images.testImage.image, DesignSystemAsset.Images.testImage.image, - DesignSystemAsset.Images.testImage.image + DesignSystemAsset.Images.testImage2.image ] var segConArray = ["최근", "추천", "인기"] @@ -27,7 +27,7 @@ class HomeViewController: BaseVC { flowLayout.minimumLineSpacing = 9 let view = UICollectionView(frame: .zero, collectionViewLayout: flowLayout) view.register(MoviesCell.self, forCellWithReuseIdentifier: MoviesCell.identifier) - + return view }() @@ -51,6 +51,11 @@ class HomeViewController: BaseVC { $0.layer.cornerRadius = 10 } + private let viewAllButton = UIButton().then { + $0.titleLabel?.font = DesignSystemFontFamily.Suit.regular.font(size: 10) + $0.setTitle("전체 보기 >", for: .normal) + } + private let segCon = UISegmentedControl(items: segConArray).then { $0.clipsToBounds = false $0.selectedSegmentIndex = 0 @@ -87,24 +92,18 @@ class HomeViewController: BaseVC { default: break } - - UIView.transition( - with: owner.bannerImageView, - duration: 0.3, - options: .transitionCrossDissolve, - animations: { - owner.bannerImageView.image = bannerImageSources[owner.pageControl.currentPage] - }) + owner.bannerAnimation() }.disposed(by: disposeBag) } func bindUI() { moviesData .asDriver() - .drive(moviesCollectionView.rx.items(cellIdentifier: MoviesCell.identifier, - cellType: MoviesCell.self)) { (row, data, cell) in - cell.prepare(model: data) - }.disposed(by: disposeBag) + .drive(moviesCollectionView.rx.items( + cellIdentifier: MoviesCell.identifier, + cellType: MoviesCell.self)) { (row, data, cell) in + cell.prepare(model: data) + }.disposed(by: disposeBag) segCon.rx.selectedSegmentIndex.changed .bind(with: self) { owner, _ in @@ -115,11 +114,29 @@ class HomeViewController: BaseVC { self.underlineView.frame.origin.x = underlineFinalXPosition } ) - switch owner.segCon.selectedSegmentIndex { - - default: - return + }.disposed(by: disposeBag) + } + + func bannerAnimation() { + UIView.transition( + with: bannerImageView, + duration: 0.3, + options: .transitionCrossDissolve, + animations: { + print(self.pageControl.currentPage) + self.bannerImageView.image = bannerImageSources[self.pageControl.currentPage] + }) + } + + private func bannerMovetimer() { + Observable.interval(.seconds(4), scheduler: MainScheduler.instance) + .bind(with: self) { owner, _ in + if owner.pageControl.currentPage == 3 { + owner.pageControl.currentPage = 0 + } else { + owner.pageControl.currentPage += 1 } + owner.bannerAnimation() }.disposed(by: disposeBag) } @@ -129,9 +146,9 @@ class HomeViewController: BaseVC { override func configureVC() { navigationController?.navigationBar.prefersLargeTitles = false - navigationItem.title = "hihi" setGesture() bindUI() + bannerMovetimer() let width = segCon.bounds.size.width / CGFloat(segCon.numberOfSegments) let height: CGFloat = 2.0 @@ -143,9 +160,13 @@ class HomeViewController: BaseVC { } override func addView() { - view.addSubviews(bannerImageView, pageControl, segCon, moviesCollectionView) + view.addSubviews( + bannerImageView, pageControl, + segCon, moviesCollectionView, + viewAllButton + ) } - + override func setLayout() { bannerImageView.snp.makeConstraints { $0.top.equalTo(view.safeAreaLayoutGuide).inset(21) @@ -164,6 +185,11 @@ class HomeViewController: BaseVC { $0.height.equalTo(23) } + viewAllButton.snp.makeConstraints { + $0.centerY.equalTo(segCon) + $0.trailing.equalToSuperview().inset(15) + } + moviesCollectionView.snp.makeConstraints { $0.top.equalTo(segCon.snp.bottom).offset(10) $0.leading.equalToSuperview().inset(15)