Day_Count_Memory_Days/anniversary_Project/Tool/ageView.swift
2024-07-15 11:52:15 +08:00

108 lines
3.5 KiB
Swift

//
// ageView.swift
// anniversary_Project
//
// Created by 16 on 2024/7/9.
import UIKit
class AgePickerView: UIView {
private let pickerView = UIPickerView()
private let ageRange = Array(0...100)
private let leftImageView = UIImageView(image: UIImage(named: "leftImage"))
private let rightImageView = UIImageView(image: UIImage(named: "rightImage"))
var selectedAge: Int = 0 {
didSet {
pickerView.selectRow(selectedAge, inComponent: 0, animated: true)
}
}
var onAgeSelected: ((Int) -> Void)?
override init(frame: CGRect) {
super.init(frame: frame)
setupPickerView()
setupImageViews()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupPickerView()
setupImageViews()
}
private func setupPickerView() {
pickerView.translatesAutoresizingMaskIntoConstraints = false
pickerView.delegate = self
pickerView.dataSource = self
addSubview(pickerView)
NSLayoutConstraint.activate([
pickerView.leadingAnchor.constraint(equalTo: leadingAnchor),
pickerView.trailingAnchor.constraint(equalTo: trailingAnchor),
pickerView.topAnchor.constraint(equalTo: topAnchor),
pickerView.bottomAnchor.constraint(equalTo: bottomAnchor)
])
}
private func setupImageViews() {
leftImageView.translatesAutoresizingMaskIntoConstraints = false
rightImageView.translatesAutoresizingMaskIntoConstraints = false
addSubview(leftImageView)
addSubview(rightImageView)
NSLayoutConstraint.activate([
leftImageView.centerYAnchor.constraint(equalTo: pickerView.centerYAnchor),
leftImageView.trailingAnchor.constraint(equalTo: pickerView.centerXAnchor, constant: -60),
leftImageView.widthAnchor.constraint(equalToConstant: 18),
leftImageView.heightAnchor.constraint(equalToConstant: 18),
rightImageView.centerYAnchor.constraint(equalTo: pickerView.centerYAnchor),
rightImageView.leadingAnchor.constraint(equalTo: pickerView.centerXAnchor, constant: 60),
rightImageView.widthAnchor.constraint(equalToConstant: 18),
rightImageView.heightAnchor.constraint(equalToConstant: 18)
])
}
}
extension AgePickerView: UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return ageRange.count
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 60
}
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let label = UILabel()
label.text = "\(ageRange[row])"
label.textAlignment = .center
if row == pickerView.selectedRow(inComponent: 0) {
label.font = UIFont.boldSystemFont(ofSize: 36)
label.textColor = .black
} else {
label.font = UIFont.systemFont(ofSize: 36)
label.textColor = .gray
}
return label
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectedAge = row
pickerView.reloadAllComponents()
onAgeSelected?(selectedAge)
}
}