HorizontalPickerView
JHorizontalPickerView
JHorizontalPickerView는 iOS를 위한 사용자 정의 수평 피커 뷰로, SnapKit과 Then 라이브러리를 활용하여 레이아웃 및 초기화를 향상시킨 Swift 기반 컴포넌트입니다.
초기화
JHorizontalPickerView(frame: CGRect, initialPickerValue: Int, selectedFontSize: CGFloat = 30, regularFontSize: CGFloat = 20, selectedTextColor: UIColor = .white, regularTextColor: UIColor = .black)
- 매개변수:
- frame: 포인트 단위로 측정된 뷰의 프레임 사각형.
- initialPickerValue: 피커에서 초기에 선택된 값.
- selectedFontSize: 선택된 항목의 글꼴 크기.
- regularFontSize: 선택되지 않은 항목의 글꼴 크기.
- selectedTextColor: 선택된 항목의 텍스트 색상.
- regularTextColor: 선택되지 않은 항목의 텍스트 색상.
 
속성
- pickerWidth: 피커 뷰의 너비.
- pickerSelectValue: 현재 선택된 값.
- isFirstLoad: 뷰가 처음 로드되었는지를 나타내는 부울 플래그.
- selectedFontSize: 선택된 피커 항목의 글꼴 크기.
- regularFontSize: 다른 피커 항목의 글꼴 크기.
- selectedTextColor: 선택된 피커 항목 텍스트의 색상.
- regularTextColor: 다른 피커 항목의 텍스트 색상.
- delegate:- JHorizontalPickerViewDelegate프로토콜을 준수하는 대리자.
메소드
- setPicker(): 피커를 설정합니다.
- setUpLayout(): 하위 뷰의 제약 조건과 레이아웃을 설정합니다.
대리자 프로토콜: JHorizontalPickerViewDelegate
protocol JHorizontalPickerViewDelegate {
    func didLevelChanged(selectedLevel: Int)
}
- 메소드:
- didLevelChanged(selectedLevel: Int): 피커에서 새로운 값이 선택될 때 호출됩니다.
 
예제 사용
class JHorizontalPickerViewController: UIViewController, JHorizontalPickerViewDelegate {
    private lazy var hPickerView: JHorizontalPickerView = {
        let frame = CGRect(x: 20, y: 100, width: 300, height: 100)
        let initialPickerValue = 5
        return JHorizontalPickerView(frame: frame, initialPickerValue: initialPickerValue, selectedFontSize: 30, regularFontSize: 20, selectedTextColor: .red).then {
            $0.pickerSelectValue = 0
            $0.delegate = self
        }
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        setUpLayout()
        view.backgroundColor = .white
    }
    func didLevelChanged(selectedLevel: Int) {
        print("변경된 값은?: \(selectedLevel)")
    }
    func setUpLayout() {
        view.addSubview(hPickerView)
        hPickerView.snp.makeConstraints {
            $0.leading.equalToSuperview()
            $0.trailing.equalToSuperview()
            $0.center.equalToSuperview()
            $0.height.equalTo(120)
        }
    }
}