// // MettCell.swift // Twear // // Created by yangbin on 2022/3/1. // import UIKit import Charts class MettCell: UICollectionViewCell { @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var valueLabel: UILabel! @IBOutlet weak var dateLabel: UILabel! @IBOutlet weak var noDataImageView: UIImageView! @IBOutlet weak var barChartView: BarChartView! var mettArray: [MettModel] = [] { didSet { if mettArray.count == 0 { valueLabel.toUnitMode(text: "--", unit: " MET-min", font: BoldFont(25), unitFont: RegularFont(11), unitColor: UIColor.rgbColorFromHex(0x808080)) dateLabel.text = LocString("暂无数据") noDataImageView.isHidden = false barChartView.isHidden = true } else { let mett = mettArray.last! valueLabel.toUnitMode(text: "\(mett.value)", unit: " MET-min", font: BoldFont(25), unitFont: RegularFont(11), unitColor: UIColor.rgbColorFromHex(0x808080)) dateLabel.text = mett.date!.toString(.custom("yyyy/MM/dd")) updateChartView(mettArray) noDataImageView.isHidden = true barChartView.isHidden = false } } } private func updateChartView(_ mettArray: [MettModel]) { var maxValue = mettArray.max(\.value)?.value ?? 1 if maxValue == 0 { maxValue = 1 } setupChartView(maxValue: maxValue) var dataEntries = [BarChartDataEntry]() var mett = MettModel(value: 0, date: Date().dateAtStartOf(.day)) for i in 0..<7 { var value = 0 if i < mettArray.count { value = mettArray[i].value if mettArray[i].value > 0 { mett = mettArray[i] valueLabel.toUnitMode(text: "\(mett.value)", unit: " MET-min", font: BoldFont(25), unitFont: RegularFont(11), unitColor: UIColor.rgbColorFromHex(0x808080)) dateLabel.text = mett.date!.toString(.custom("yyyy/MM/dd")) } } dataEntries.append(BarChartDataEntry(x: Double(i), yValues: [Double(value), Double(maxValue-value)])) } let dataSet = BarChartDataSet(entries: dataEntries) dataSet.colors = [UIColor.rgbColorFromHex(0x1D8FF7), UIColor.rgbColorFromHex(0xF2F2F2)] dataSet.drawValuesEnabled = false dataSet.highlightEnabled = false let chartData = BarChartData(dataSets: [dataSet]) chartData.barWidth = 0.45 barChartView.data = chartData } func setupChartView(maxValue: Int) { barChartView.chartDescription?.enabled = false barChartView.legend.enabled = false barChartView.setScaleEnabled(false) barChartView.rightAxis.enabled = false let leftAxis = barChartView.leftAxis leftAxis.axisMinimum = 0 //设置左侧Y轴最小值 leftAxis.axisMaximum = Double(maxValue) leftAxis.enabled = false let xAxis = barChartView.xAxis xAxis.axisMinimum = -0.45 xAxis.axisMaximum = 6.45 xAxis.granularity = 1 //间隔 xAxis.enabled = false } override func awakeFromNib() { super.awakeFromNib() titleLabel.text = LocString("梅脱") // lineChartView.isUserInteractionEnabled = false // Initialization code } }