首页 > 解决方案 > 在图表库 Swift 中截断 PieChart 的值标签

问题描述

`类 PieChartViewController: DemoBaseViewController {

@IBOutlet var chartView: PieChartView!
@IBOutlet var sliderX: UISlider!
@IBOutlet var sliderY: UISlider!
@IBOutlet var sliderTextX: UITextField!
@IBOutlet var sliderTextY: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Pie Chart"
    self.setup(pieChartView: chartView)
    
    chartView.delegate = self
    chartView.holeRadiusPercent = 0.8
    chartView.usePercentValuesEnabled = true
    chartView.transparentCircleRadiusPercent = 0
    chartView.drawHoleEnabled = true
    chartView.transparentCircleColor = UIColor.white.withAlphaComponent(1)
    chartView.drawCenterTextEnabled = true
    chartView.centerText = nil
    let l = chartView.legend
    l.enabled = false
    
    
    //MARK: Entry label Styling (Value Label Above PieChart)
    chartView.entryLabelColor = .black
    chartView.entryLabelFont = .systemFont(ofSize: 14, weight: .medium)
    
    //MARK: Setting Offset
    let frameOffset = chartView.frame.width * 0.12
    chartView.setExtraOffsets(left: frameOffset, top: frameOffset, right: frameOffset, bottom: frameOffset)
    
    self.slidersValueChanged(nil)
}

override func updateChartData() {
    if self.shouldHideData {
        chartView.data = nil
        return
    }
    self.setDataCount()
}

func setDataCount() {
    
    let entry1 = PieChartDataEntry(value: 22, label: "Apple.It is a fruit")
    let entry2 = PieChartDataEntry(value: 33, label: "Zebra.It is an animal")
    let entry3 = PieChartDataEntry(value: 31, label: "Eagle.It is a bird")
    let entry4 = PieChartDataEntry(value: 14, label: "Asia.It is a continent")
    
    var enteries: [PieChartDataEntry] = []
    enteries.append(entry1)
    enteries.append(entry2)
    enteries.append(entry3)
    enteries.append(entry4)
    
    let set = PieChartDataSet(entries: enteries, label: "Knowledge")
    set.drawIconsEnabled = false
    set.sliceSpace = 0
    set.selectionShift = 0
    
    
    set.colors = ChartColorTemplates.vordiplom()
        + ChartColorTemplates.joyful()
        + ChartColorTemplates.colorful()
        + ChartColorTemplates.liberty()
        + ChartColorTemplates.pastel()
        + [UIColor(red: 51/255, green: 181/255, blue: 229/255, alpha: 1)]
    
    // MARK: Setting Value Label
    
    set.valueLinePart1OffsetPercentage = 0.20
    set.valueLinePart1Length = 0.4
    set.valueLinePart2Length = 0.4
    set.valueLineColor = .black
    set.valueTextColor = .black
    set.xValuePosition = .outsideSlice
    set.yValuePosition = .outsideSlice
    
    let data = PieChartData(dataSet: set)
    data.setValueFont(.systemFont(ofSize: 13, weight: .medium))
    data.setValueTextColor(.black)
    
    chartView.data = data
    chartView.highlightValues(nil)
}

override func optionTapped(_ option: Option) {
    chartView.setNeedsDisplay()
}

// MARK: - Actions
@IBAction func slidersValueChanged(_ sender: Any?) {
    self.updateChartData()
}

}`

如何截断或自动换行饼图中的值标签?

在此处输入图像描述

标签: swiftchartspie-chartios-charts

解决方案


推荐阅读