// // HeartRateCell.swift // Twear // // Created by yangbin on 2021/11/16. // import UIKit import Charts class HeartRateCell: UICollectionViewCell { @IBOutlet weak var hrValueLabel: UILabel! @IBOutlet weak var dateLabel: UILabel! @IBOutlet weak var noDataLabel: UILabel! @IBOutlet weak var noDataImageView: UIImageView! @IBOutlet weak var lineChartView: LineChartView! @IBOutlet weak var titleLabel: UILabel! var hrHistory: [HeartRateModel] = [] { didSet { let count = hrHistory.count if count == 0 { hrValueLabel.text = "" dateLabel.text = "" noDataLabel.isHidden = false lineChartView.isHidden = true } else { hrValueLabel.text = "\(hrHistory[count-1].value)次/分" dateLabel.text = hrHistory[count-1].date!.toString(.custom("MM/dd")) updateChartView(hrHistory) noDataLabel.isHidden = true lineChartView.isHidden = false } } } private func updateChartView(_ hrHistory: [HeartRateModel]) { setupChartView() let hr = hrHistory.max{$0.value < $1.value} let maxHr = max(hr?.value ?? 100, 100) lineChartView.leftAxis.axisMaximum = Double(maxHr) * 1.1 var dataEntries = [ChartDataEntry]() for (i, hr) in hrHistory.enumerated() { dataEntries.append(ChartDataEntry(x: Double(i), y: Double(hr.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 = .cubicBezier dataSet.setDrawHighlightIndicators(false) dataSet.setColor(UIColor.rgbColorFromHex(0xFF0000)) dataSet.lineWidth = 1 dataSet.drawFilledEnabled = true let gradientColors = [UIColor.rgbColorFromHex(0xE10025).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 = 50 //设置左侧Y轴最小值 leftAxis.granularity = 10 leftAxis.enabled = false let xAxis = lineChartView.xAxis xAxis.axisMinimum = 0 xAxis.axisMaximum = 30 xAxis.granularity = 1 //间隔 xAxis.enabled = false } override func awakeFromNib() { super.awakeFromNib() titleLabel.text = LocString("心率") noDataImageView.isHidden = true // lineChartView.isUserInteractionEnabled = false // Initialization code } }