복붙노트

[SWIFT] 스위프트 배에서 막 대형 차트에 줄 위에 트랙볼 및 액세스 라벨을 달성하는 방법

SWIFT

스위프트 배에서 막 대형 차트에 줄 위에 트랙볼 및 액세스 라벨을 달성하는 방법

해결법


  1. 1.불행하게도, 바 위의 값 String 또는 더블 대신 이미지를 설정하는 방법은 없습니다. 하지만 그래 우리는 바 위의 값이 언급 한 링크를 방문하시기 바랍니다에 액세스 할 수 있습니다. https://github.com/danielgindi/Charts/issues/2126

    불행하게도, 바 위의 값 String 또는 더블 대신 이미지를 설정하는 방법은 없습니다. 하지만 그래 우리는 바 위의 값이 언급 한 링크를 방문하시기 바랍니다에 액세스 할 수 있습니다. https://github.com/danielgindi/Charts/issues/2126

    class ViewController: UIViewController {
        var chartData = BarChartData()
        var months: [String]!
        var unitsSold = [Double]()
     weak var valueFormatter: IValueFormatter?
       @IBOutlet var viewForChart: BarChartView!
    override func viewDidLoad() {
            super.viewDidLoad()
    valueFormatter = self
    
            months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
            unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0]
    
     setChart(dataEntryX: months, dataEntryY: unitsSold)
    }
    
        func setChart(dataEntryX forX:[String],dataEntryY forY: [Double]) {
            viewForChart.noDataText = "You need to provide data for the chart."
            var dataEntries:[BarChartDataEntry] = []
            for i in 0..<forX.count{
    
                let dataEntry = BarChartDataEntry(x: Double(i), y:  Double(forY[i]) , data: months as AnyObject?)
         dataEntries.append(dataEntry)
            }
    
            let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold")
           chartDataSet.setColor(UIColor.brown, alpha: 0.30)
            chartData = BarChartData(dataSet: chartDataSet)
    chartData.barWidth = 0.75
            chartData.setDrawValues(true)
            viewForChart.data = chartData
    viewForChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: months)
    
            viewForChart.drawBordersEnabled = false
    
      viewForChart.data?.setValueFormatter(valueFormatter)
     }
    }
    

    위 또는 클래스를 넘어 확장을 추가

    extension ViewController: IValueFormatter {
        func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
            print(value)
            //logic to print string at required point or value
            switch value {
    
            case 20.0: return "🙂"
            default: return ""
            }
        }
    }
    

  2. 2.빠른 2 배의 경우 수업이 추가 //

    빠른 2 배의 경우 수업이 추가 //

    class ValueFormator2:NSNumberFormatter{
        override func stringFromNumber(number: NSNumber) -> String? {
            print(number)
            switch number {
            case 3.0: return "🙂"
    
            default: return "\(number)"
            }
        }
    
    }
    

    그리고

     func setChart(xValues: [String], yValuesLineChart: [Double], yValuesBarChart: [Double] , combinedChartView:CombinedChartView) {
        let form = ValueFormator2()
        combinedChartView.barData?.setValueFormatter(form)
    }
    
  3. from https://stackoverflow.com/questions/41979926/how-to-achieve-trackball-and-access-label-above-bar-on-bar-charts-in-swift-3x by cc-by-sa and MIT license