StepGoalViewController.swift 3.43 KB
//
//  StepGoalViewController.swift
//  Twear
//
//  Created by yangbin on 2021/12/18.
//

import UIKit

class StepGoalViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    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 pickerView: UIPickerView!
    
    private var selectedRow: Int = 0
    
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.setNavigationBarHidden(true, animated: true)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        selectedRow = UserInfo.stepsGoal/1000 - 1
        pickerView.selectRow(selectedRow, inComponent: 0, animated: false)
        // 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(20)
            pickerLabel?.textAlignment = .center
            pickerLabel?.textColor = UIColor.lightGray
        }
        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("步"))")
        string.addAttributes([.foregroundColor: UIColor.rgbColorFromHex(0x00993E), .font: BoldFont(23)], range: NSMakeRange(0, string.string.length-1))
        string.addAttributes([.foregroundColor: UIColor.rgbColorFromHex(0x00993E), .font: BoldFont(15)], range: NSMakeRange(string.length-1, 1))
        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.
    }
    */

}