ios – Swift Charts Library, when first Loaded, highlighted worth already

[ad_1]


import UIKit
import Charts

class BarChartViewTableViewCell: UITableViewCell {
    
    @IBOutlet weak var graphTitleLabel: UILabel!
    
    @IBOutlet weak var chartView: BarChartView!
    
    @IBOutlet weak var xAxisLabelView: UIView!
    
    @IBOutlet weak var monthLabel: UILabel!
    
    var axisLabels: [GraphCircleDateView] = []
    
    let viewModel = BarGraphViewModel()
    
    override func awakeFromNib() {
        tremendous.awakeFromNib()
        
        setChart(dataPoints: [0,1,2,3,4,5,6,7,8,9,10,11,12], values: [30, 24, 50, 125, 40, 50, 66, 30, 0, 0, 0, 0,0])
        setChartView()
        addxAxisLabel()
        setMarker()
    }
    
    func setMarker() {
        let marker = XYMarkerView(shade: .selectedBlue, borderColor: .keyColor, font: UIFont.Gotham(), textColor: .keyColor, insets: UIEdgeInsets(high: 8, left: 8, backside: 14, proper: 8), unit: "점")
        
        marker.chartView = chartView
        marker.minimumSize = CGSize(width: 60, peak: 30)
        chartView.marker = marker
        

        **chartView.highlightValue(x: 3, dataSetIndex: 3, dataIndex: 3)
        chartView.highlightValue(Spotlight(x: 3, dataSetIndex: 3, stackIndex: 3))**
    }
    
    func addxAxisLabel() {
        var i = 0
    
        //axisLabels.removeAll()
        viewModel.barXPosition.forEach {
            let circle = GraphCircleDateView(body: CGRect(x: $0 - 10, y: 14, width: 20, peak: 20))
            circle.label.textual content = "0(i)"
            axisLabels.append(circle)
            
            i += 1
            xAxisLabelView.addSubview(circle)
        }
    }
    
    func setChartView() {
        chartView.delegate = self
        
        chartView.pinchZoomEnabled = false
        chartView.scaleYEnabled = false
        chartView.scaleXEnabled = true
        chartView.zoom(scaleX: 1.5, scaleY: 1, x: 0, y: 0)
        chartView.dragYEnabled = false
        chartView.dragXEnabled = true
        chartView.doubleTapToZoomEnabled = false
        
        let xAxis = chartView.xAxis
        xAxis.labelPosition = .backside
        xAxis.labelFont = .systemFont(ofSize: 10)
        xAxis.axisLineColor = .clear
        xAxis.labelTextColor = .black
        xAxis.gridColor = .clear
        xAxis.spaceMin = 0.4
        xAxis.spaceMax = 0.4
        
        let leftAxis = chartView.leftAxis
        leftAxis.labelFont = .systemFont(ofSize: 10)
        leftAxis.labelCount = 3
        leftAxis.labelPosition = .outsideChart
        leftAxis.spaceTop = 0.5
        leftAxis.axisLineColor = .clear
        leftAxis.xOffset = 10
        
        chartView.rightAxis.enabled = false
        chartView.legend.enabled = false
        
        chartView.backgroundColor = .systemGray6
        chartView.layer.borderWidth = 0.2
        chartView.layer.borderColor = UIColor.lightGray.cgColor
        chartView.layer.cornerRadius = 5
    }
    
    func setChart(dataPoints: [Int], values: [Double]) {
        // 데이터 생성
        var dataEntries: [BarChartDataEntry] = []
        var index = 0
        for i in dataPoints {
            let dataEntry = BarChartDataEntry(x: Double(i), y: values[index])
            dataEntries.append(dataEntry)
            index += 1
        }
        
        let chartDataSet = BarChartDataSet(entries: dataEntries, label: "최근 데이터")
        // 바그래프에 데이터 레이블 삭제
        chartDataSet.drawValuesEnabled = false
        chartDataSet.setColor(.lightGray)
        chartDataSet.highlightColor = .keyColor
        chartDataSet.highlightAlpha = 1
        
        // 데이터 삽입
        let chartData = BarChartData(dataSet: chartDataSet)
        chartView.knowledge = chartData

        chartView.barData?.barWidth = 0.3
    }
}


extension BarChartViewTableViewCell: ChartViewDelegate {
    
    /// 선택하면 날짜 원 색상 변경
    func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, spotlight: Spotlight) {
        let index = Int(entry.x)
        let preIndex = viewModel.barSelectedDateIndex
        
        if preIndex == -1 {
            axisLabels[index].view.backgroundColor = .keyColor
            axisLabels[index].label.textColor = .white
        } else if index != preIndex {
            axisLabels[index].view.backgroundColor = .keyColor
            axisLabels[index].label.textColor = .white
            
            axisLabels[preIndex].view.backgroundColor = .systemGray6
            axisLabels[preIndex].label.textColor = .black
        }
        
        viewModel.barSelectedDateIndex = index
    }
}



enter hyperlink description right here

I used Charts/danielgindi..
When a graph is chosen, the spotlight works correctly. However what I would like is to spotlight the middle graph on the primary display screen when no graph is chosen.

chartView.highlightValue(x: 3, dataSetIndex: 3, dataIndex: 3)

chartView.highlightValue(Spotlight(x: 3, dataSetIndex: 3, stackIndex: 3))

I wrote the code in the identical method as above, however it failed. Assist me. everybody

[ad_2]

Leave a Reply