Intro) ์ด๊ฑธ ์™œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‚˜์š”?

๋งˆ์ผ“์ปฌ๋ฆฌ ํด๋ก  ์ฝ”๋”ฉ ์ค‘์— ๊ตฌํ˜„ํ•ด์•ผ ๋˜์–ด์„œ

1. ์Šคํ‹ฐํ‚ค ํ—ค๋”๋ž€?

StickyHeader๋Š” ์Šคํฌ๋กค์„ ์•„๋ž˜๋กœ ๋‚ด๋ ธ์„ ๋•Œ ์œ„์ชฝ์— ์œ—๋ณ€์ด ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ™”๋ฉด์„ ๋งํ•œ๋‹ค.

2. ๊ตฌํ˜„ ๋ฐฉ์‹

๋‚˜๋Š” collectionView ์•ˆ์— ์Šคํ‹ฐํ‚ค ํ—ค๋”๋ฅผ ๋„ฃ๊ณ  ์‹ถ์—ˆ๊ณ  ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

๊ฐœ์š”

1. ์ƒ๋‹จ์— ๋ถ™ํžˆ๋Š”(์Šคํ‹ฐํ‚ค ํ—ค๋”๋กœ ์‚ฌ์šฉํ• ) ๋ทฐ๋ฅผ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ์ค€๋น„ํ•ด๋‘”๋‹ค.

๋‚ด๊ฐ€ ์ƒ๋‹จ์— ๋ถ™ํžˆ๋Š” ๋ทฐ๋ฅผ HomeNewStickcyHeaderView ๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๊ตฌํ˜„ํ•ด๋‘์—ˆ๋‹ค.

import UIKit
import SnapKit

import Then

class HomeNewStikcyHeaderView: UIView {
    private let countLabel = UILabel()
    private lazy var categoryButton = UIButton()
    private lazy var filterButton = UIButton()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        style()
        hierarchy()
        layout()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    private func style() {
        self.backgroundColor = .white
        
        countLabel.do {
            $0.text = "์ด 173๊ฐœ"
        }
        
        categoryButton.do {
            $0.setTitle("์‹ ์ƒํ’ˆ์ˆœ", for: .normal)
            $0.setTitleColor(.black, for: .normal)
        }
        
        filterButton.do {
            $0.setTitle("ํ•„ํ„ฐ", for: .normal)
            $0.setTitleColor(.black, for: .normal)
        }
    }
    
    
    private func hierarchy() {
        self.addSubviews(countLabel,categoryButton, filterButton)
    }
    
    private func layout() {
        countLabel.snp.makeConstraints {
            $0.top.equalToSuperview()
            $0.leading.equalToSuperview().offset(15)
            $0.width.equalTo(70)
            $0.height.equalTo(40)
        }
        
        categoryButton.snp.makeConstraints {
            $0.top.equalToSuperview()
            $0.trailing.equalToSuperview().inset(85)
            $0.width.equalTo(70)
            $0.height.equalTo(40)
        }
        
        filterButton.snp.makeConstraints {
            $0.top.equalToSuperview()
            $0.trailing.equalToSuperview().inset(15)
            $0.width.equalTo(70)
            $0.height.equalTo(40)
        }
    }
}

2. ์Šคํ‹ฐํ‚ค ๋ทฐ๋ฅผ ์Šคํฌ๋กค์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๊ณ , ์ƒ์œ„ ๋ทฐ์— ์ถ”๊ฐ€ํ•œ๋‹ค. (addSubview)

์Šคํ‹ฐํ‚ค ๋ทฐ๋Š” ์Šคํฌ๋กค์— ์˜ํ–ฅ์„ ๋ฐ›์œผ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‚ด๊ฐ€ ๊ธฐ์กด์— ๋งŒ๋“ค์–ด๋‘” collectionView์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ƒ์œ„ ๋ทฐ์— ์ถ”๊ฐ€๋ฅผ ํ•ด๋‘์—ˆ๋‹ค.

private func hierarchy() {
        self.addSubviews(homeNewCollectionView, homeNewStikcyHeaderView)
}

/*
homeNewCollecionView.addSubview(homeNewStikcyHeaderView) ์ด๋ ‡๊ฒŒ ์•ˆํ•จ!
*/

3. ์Šคํ‹ฐํ‚ค ๋ทฐ์˜ ์Šค๋ƒ…ํ‚ท์„ ์ตœ์ƒ๋‹จ์— ์žก๊ณ  ๋™์ผํ•œ ๋†’์ด๋ฅผ ์ ์šฉํ•œ๋‹ค.

์Šคํ‚ค๋ทฐ๋Š” ์ƒ๋‹จ์— ๊ณ ์ •๋˜์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Snapkit์œผ๋กœ ์˜คํ†  ๋ ˆ์ด์•„์›ƒ์„ ์žก์„๋•Œ top์„ ์ƒ๋‹จ์— ์žก์•„๋‘๊ณ , ๋†’์ด๋Š” ๊ธฐ์กด์˜ ๋ถ™์ด๋ ค๊ณ  ํ–ˆ๋˜ ๋ทฐ์˜ ๊ธธ์ด์™€ ๋™์ผํ•˜๊ฒŒ ๋ ˆ์ด์•„์›ƒ์„ ์žก๋Š”๋‹ค.