diff --git a/Poppool/Poppool.xcodeproj/project.pbxproj b/Poppool/Poppool.xcodeproj/project.pbxproj index 1545869a..87241957 100644 --- a/Poppool/Poppool.xcodeproj/project.pbxproj +++ b/Poppool/Poppool.xcodeproj/project.pbxproj @@ -3848,7 +3848,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.15; + MARKETING_VERSION = 1.0.17; PRODUCT_BUNDLE_IDENTIFIER = com.poppoolIOS.poppool; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -3886,7 +3886,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.15; + MARKETING_VERSION = 1.0.17; PRODUCT_BUNDLE_IDENTIFIER = com.poppoolIOS.poppool; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; diff --git a/Poppool/Poppool/Presentation/Scene/Home/Main/View/ImageBannerSection/ImageBannerSection/ImageBannerSectionCell.swift b/Poppool/Poppool/Presentation/Scene/Home/Main/View/ImageBannerSection/ImageBannerSection/ImageBannerSectionCell.swift index a1d7f4df..025ec4a9 100644 --- a/Poppool/Poppool/Presentation/Scene/Home/Main/View/ImageBannerSection/ImageBannerSection/ImageBannerSectionCell.swift +++ b/Poppool/Poppool/Presentation/Scene/Home/Main/View/ImageBannerSection/ImageBannerSection/ImageBannerSectionCell.swift @@ -24,16 +24,11 @@ final class ImageBannerSectionCell: UICollectionViewCell { return view }() - var pageControl: UIPageControl = { - let controller = UIPageControl() - controller.currentPage = 0 - controller.preferredIndicatorImage = UIImage(systemName: "circle") - controller.preferredCurrentPageIndicatorImage = UIImage(systemName: "circle.fill") - controller.isUserInteractionEnabled = false - controller.hidesForSinglePage = false + var pageControl: CustomPageControl = { + let controller = CustomPageControl() return controller }() - + let stopButton: UIButton = { let button = UIButton() button.setImage(UIImage(named: "icon_banner_stopButton"), for: .normal) @@ -68,8 +63,6 @@ final class ImageBannerSectionCell: UICollectionViewCell { let bannerTapped: PublishSubject = .init() private var currentIndex: Int = 1 - private var stopButtonLeadingConstraints: Constraint? - private var playButtonLeadingConstraints: Constraint? private var isHiddenPauseButton: Bool = true // MARK: - init @@ -124,7 +117,6 @@ private extension ImageBannerSectionCell { ImageBannerChildSectionCell.self, forCellWithReuseIdentifier: ImageBannerChildSectionCell.identifiers ) - pageControl.transform = CGAffineTransform(scaleX: 0.6, y: 0.6) } func setUpConstraints() { @@ -135,21 +127,20 @@ private extension ImageBannerSectionCell { contentView.addSubview(pageControl) pageControl.snp.makeConstraints { make in make.centerX.equalToSuperview() - make.height.equalTo(4) make.bottom.equalToSuperview().inset(24) } contentView.addSubview(stopButton) stopButton.snp.makeConstraints { make in make.size.equalTo(6) make.centerY.equalTo(pageControl) - stopButtonLeadingConstraints = make.leading.equalTo(pageControl.snp.trailing).offset(-40).constraint + make.leading.equalTo(pageControl.snp.trailing).offset(6) } contentView.addSubview(playButton) playButton.snp.makeConstraints { make in make.size.equalTo(6) make.centerY.equalTo(pageControl) - playButtonLeadingConstraints = make.leading.equalTo(pageControl.snp.trailing).offset(-40).constraint + make.leading.equalTo(pageControl.snp.trailing).offset(6) } } @@ -214,16 +205,7 @@ extension ImageBannerSectionCell: Inputable { func injection(with input: Input) { if imageSection.isEmpty { - pageControl.numberOfPages = input.imagePaths.count - if #available(iOS 18.3, *) { - let stopButtonLeadingOffset = -26 - stopButtonLeadingConstraints?.update(offset: stopButtonLeadingOffset) - playButtonLeadingConstraints?.update(offset: stopButtonLeadingOffset) - } else { - let stopButtonLeadingOffset = input.imagePaths.count == 3 ? -40 : input.imagePaths.count == 2 ? -36 : 0 - stopButtonLeadingConstraints?.update(offset: stopButtonLeadingOffset) - playButtonLeadingConstraints?.update(offset: stopButtonLeadingOffset) - } + pageControl.setNumberOfPages(input.imagePaths.count) let datas = zip(input.imagePaths, input.idList) let backContents = datas.suffix(1) let frontContents = datas.prefix(1) @@ -302,3 +284,67 @@ extension ImageBannerSectionCell: UICollectionViewDelegate, UICollectionViewData } } + +class CustomPageControl: UIView { + private let stackView = UIStackView() + var numberOfPages: Int = 0 { + didSet { + setupStackView() + } + } + var currentPage: Int = 0 { + didSet { + updateDots() + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + setupStackView() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setupStackView() + } + + private func setupStackView() { + stackView.arrangedSubviews.forEach { view in + view.removeFromSuperview() + } + stackView.axis = .horizontal + stackView.spacing = 6 + stackView.alignment = .center + addSubview(stackView) + stackView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + } + + func setNumberOfPages(_ pages: Int) { + numberOfPages = pages + stackView.arrangedSubviews.forEach { $0.removeFromSuperview() } + for _ in 0..