// // StepGoalViewController.swift // Twear // // Created by yangbin on 2021/12/18. // import UIKit class StepGoalViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { var buttonTitle: String? var stepGoalClosure: ((_ steps: Int) -> ())? private var goalArray: [Int] = { var array: [Int] = [] for i in 0..<50 { array.append((i+1)*1000) } return array }() @IBOutlet weak var nextButton: UIButton! @IBOutlet weak var pickerView: UIPickerView! private var selectedRow: Int = 0 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.navigationController?.setNavigationBarHidden(false, animated: true) } override func viewDidLoad() { super.viewDidLoad() selectedRow = UserInfo.stepsGoal/1000 - 1 pickerView.selectRow(selectedRow, inComponent: 0, animated: false) if buttonTitle != nil { nextButton .setTitle(buttonTitle, for: UIControl.State.normal) } // Do any additional setup after loading the view. } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return goalArray.count } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return "\(goalArray[row])" } func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { var pickerLabel = view as? UILabel if pickerLabel == nil { pickerLabel = UILabel() pickerLabel?.font = BoldFont(32) pickerLabel?.textAlignment = .center pickerLabel?.textColor = UIColor.rgbaColorFromHex(0x333333,alpha: 0.3) } if row == selectedRow { pickerLabel?.attributedText = self.pickerView(pickerView, attributedTitleForRow: selectedRow, forComponent: component) } else { pickerLabel?.text = self.pickerView(pickerView, titleForRow: row, forComponent: component) } return pickerLabel! } func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? { let string = NSMutableAttributedString(string: " \(goalArray[row]) \(LocString("步"))") let unitLength = LocString("步").count string.addAttributes([.foregroundColor: UIColor.rgbColorFromHex(0x333333), .font: BoldFont(40)], range: NSMakeRange(0, string.string.length-1)) string.addAttributes([.foregroundColor: UIColor.rgbColorFromHex(0x555555), .font: BoldFont(14)], range: NSMakeRange(string.length-unitLength, unitLength)) return string } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { selectedRow = row pickerView.reloadAllComponents() } func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 40 } @IBAction func saveStepGoal(_ sender: Any) { stepGoalClosure?(goalArray[selectedRow]) // navigationController?.popViewController(animated: true) } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ }