// // PressureCell.swift // Twear // // Created by yangbin on 2022/2/28. // import UIKit import Charts class PressureCell: UICollectionViewCell { @IBOutlet weak var pressureLabel: UILabel! @IBOutlet weak var detailLabel: UILabel! @IBOutlet weak var valueLabel: UILabel! @IBOutlet weak var dateLabel: UILabel! @IBOutlet weak var noDataImageView: UIImageView! @IBOutlet weak var lineChartView: LineChartView! var pressureHistory: [PressureModel] = [] { didSet { let count = pressureHistory.count if count == 0 { valueLabel.text = "--" dateLabel.text = LocString("暂无数据") detailLabel.text = "" noDataImageView.isHidden = false lineChartView.isHidden = true } else { var value = pressureHistory[count-1].value if let pressure = pressureHistory.reversed().first(where: {$0.value > 0}) { value = pressure.value } valueLabel.text = "\(value)" dateLabel.text = pressureHistory[count-1].date!.toString(.custom("yyyy/MM/dd")) updateChartView(pressureHistory) noDataImageView.isHidden = true lineChartView.isHidden = false switch value { case 1..<30: detailLabel.text = LocString("轻松") case 30..<60: detailLabel.text = LocString("正常") case 60..<80: detailLabel.text = LocString("中等") case 80..<100: detailLabel.text = LocString("偏高") default: break } } } } private func updateChartView(_ pressureHistory: [PressureModel]) { setupChartView() var dataEntries = [ChartDataEntry]() for (i, pressure) in pressureHistory.enumerated() { dataEntries.append(ChartDataEntry(x: Double(i), y: Double(pressure.value))) } if dataEntries.count == 1 { dataEntries.append(ChartDataEntry(x: dataEntries[0].x+0.5, y: dataEntries[0].y)) } let dataSet = LineChartDataSet(entries: dataEntries, label: nil) dataSet.drawCirclesEnabled = false dataSet.drawValuesEnabled = false dataSet.mode = .horizontalBezier dataSet.setDrawHighlightIndicators(false) dataSet.setColor(UIColor.rgbColorFromHex(0x2AA12B)) dataSet.lineWidth = 1 dataSet.drawFilledEnabled = true let gradientColors = [UIColor.rgbColorFromHex(0x16E017).cgColor, UIColor.rgbColorFromHex(0xFFFFFF).cgColor] let gradient = CGGradient(colorsSpace: nil, colors: gradientColors as CFArray, locations: [1.0, 0.0]) dataSet.fillAlpha = 1.0 dataSet.fill = Fill(linearGradient: gradient!, angle: 90) lineChartView.data = LineChartData(dataSets: [dataSet]) } func setupChartView() { lineChartView.chartDescription?.enabled = false lineChartView.legend.enabled = false lineChartView.setScaleEnabled(false) lineChartView.rightAxis.enabled = false let leftAxis = lineChartView.leftAxis leftAxis.axisMinimum = 0 //设置左侧Y轴最小值 leftAxis.axisMaximum = 100 leftAxis.granularity = 20 leftAxis.enabled = false let xAxis = lineChartView.xAxis xAxis.axisMinimum = 0 xAxis.axisMaximum = 30 xAxis.granularity = 1 //间隔 xAxis.enabled = false } override func awakeFromNib() { super.awakeFromNib() pressureLabel.text = LocString("压力") // Initialization code } }