菜鸟教程小白 发表于 2022-12-11 19:53:19

ios - 饼图文本显示不正确?


                                            <p><p>我编写了以下代码,但饼图显示 <a href="/image/YxVht.png" rel="noreferrer noopener nofollow">like this</a> </p>

<pre><code>let months = [&#34;Jan&#34;, &#34;Feb&#34;, &#34;Apr&#34;, &#34;Jun&#34;]
      let unitsSold =
    setChart(dataPoints: months, values: unitsSold)
func setChart(dataPoints: , values: ) {
      let screenBounds = UIScreen.main.bounds
      let width = screenBounds.width
      let height = screenBounds.height
      let frame = CGRect(x: 10, y: 10, width: width, height: height/1.5)
      let chart = PieChartView(frame: frame)
      var dataEntries: = []
      for i in 0..&lt;dataPoints.count {
            let dataEntry = ChartDataEntry(x: Double(values), y: Double(i))
            dataEntries.append(dataEntry)
      }
      let pieChartDataSet = PieChartDataSet(values: dataEntries, label: &#34;Units Sold&#34;)
      var colors: = []
      for _ in 0..&lt;dataPoints.count {
            let red = Double(arc4random_uniform(256))
            let green = Double(arc4random_uniform(256))
            let blue = Double(arc4random_uniform(256))
            let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1)
            colors.append(color)

      }
      pieChartDataSet.colors = colors
      let data = PieChartData(dataSet: pieChartDataSet)
      piecharView.data = data
      piecharView.backgroundColor = UIColor.white
      piecharView.noDataText = &#34;No Data Available&#34;
      piecharView.isUserInteractionEnabled = true
         let d = Description()
      d.text = &#34;&#34;
      piecharView.chartDescription = d
      piecharView.centerText = &#34;HEALTH SCORE&#34;
      piecharView.holeRadiusPercent = 0.5
      piecharView.transparentCircleColor = UIColor.clear
      piecharView.usePercentValuesEnabled = true
      piecharView.drawEntryLabelsEnabled = true

      pieChartDataSet.colors = colors

    }
</code></pre>

<p>但我想要这样
<a href="/image/tkcGx.png" rel="noreferrer noopener nofollow">pie Chart</a>
我启用了百分比,但仍然没有显示我想要的饼图。</p>

<p> <a href="/image/GLv3x.png" rel="noreferrer noopener nofollow">Now it is showing like this</a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>let data = PieChartData(dataSet: pieChartDataSet)</code></p>这行之后

<p>输入这段代码</p>

<pre><code>    let pFormatter = NumberFormatter()
    pFormatter.numberStyle = .percent
    pFormatter.maximumFractionDigits = 1
    pFormatter.multiplier = 1
    pFormatter.percentSymbol = &#34; %&#34;
    data.setValueFormatter(DefaultValueFormatter(formatter: pFormatter))

    data.setValueFont(UIFont(name: &#34;HelveticaNeue-Light&#34;, size: 11)!)
    data.setValueTextColor(.white)
</code></pre>

<p>然后</p>

<pre><code>    piecharView.data = data
</code></pre>

<p>和</p>

<pre><code>    piecharView.setNeedDisplay()
</code></pre>

<p><strong>编辑</strong></p>

<p><strong>第 1 步</strong>:转到 Storybaord 并为 pieChartView 设置适当的约束 <br/>
<strong>第 2 步</strong>:在 Storyboard中选择 PieCharView 并从右侧面板中将其设置为 <code>PieChartView</code> 类。 <br/>
<strong>第 3 步</strong>:移除旧的 IBOutlet 并附加新的 IBoutlet 应该如下所示</p>

<pre><code>@IBOutlet weak var pieChartView: PieChartView!
</code></pre>

<p>在你的类中添加这个方法</p>

<pre><code>func setCharts(dataPoints:, values : ) {
    var dataEntries = ()

    for i in 0..&lt;dataPoints.count {
      let dataEntry =PieChartDataEntry(value: values, label: dataPoints)
      dataEntries.append(dataEntry)
    }
    let pieChartDataSet = PieChartDataSet(values: dataEntries, label: &#34;Unit Sold&#34;)
    pieChartDataSet.sliceSpace = 3
    pieChartDataSet.selectionShift = 5

    var colors: = []

    for _ in 0..&lt;dataPoints.count {
      let red = Double(arc4random_uniform(256))
      let green = Double(arc4random_uniform(256))
      let blue = Double(arc4random_uniform(256))

      let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1)
      colors.append(color)
    }

    pieChartDataSet.colors = colors

    let pieChartData = PieChartData(dataSet: pieChartDataSet)

    let pFormatter = NumberFormatter()
    pFormatter.numberStyle = .percent
    pFormatter.maximumFractionDigits = 1
    pFormatter.multiplier = 1
    pFormatter.percentSymbol = &#34; %&#34;
    pieChartData.setValueFormatter(DefaultValueFormatter(formatter: pFormatter))

    pieChartData.setValueFont(UIFont(name: &#34;HelveticaNeue-Light&#34;, size: 11)!)
    pieChartData.setValueTextColor(.white)


    self.pieChartView.data = pieChartData
    self.pieChartView.setNeedsDisplay()
    self.pieChartView.animate(xAxisDuration: 2.0,easingOption: .easeOutElastic)
}
</code></pre>

<p>并从 <code>viewDidLoad</code> 粘贴以下</p>

<pre><code>    let months = [&#34;Jan&#34;, &#34;Feb&#34;, &#34;Mar&#34;, &#34;Apr&#34;, &#34;May&#34;, &#34;Jun&#34;]
    let unitsSold =

    setCharts(dataPoints: months, values: unitsSold)
</code></pre>

<p><strong>输出:</strong></p>

<p> <a href="/image/AET4V.png" rel="noreferrer noopener nofollow"><img src="/image/AET4V.png" alt="enter image description here"/></a> </p>

<p><strong>编辑 2</strong></p>

<pre><code>    var attrString: NSMutableAttributedString?

    let paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
    paragraphStyle.lineBreakMode = NSLineBreakMode.byWordWrapping
    paragraphStyle.alignment = .center

    attrString = NSMutableAttributedString(string: &#34;HEALTH SCORE HEALTH SCORE HEALTH SCORE HEALTH SCORE&#34;)
    attrString?.setAttributes([
      NSAttributedStringKey.foregroundColor: NSUIColor.black,
      NSAttributedStringKey.font: NSUIFont.systemFont(ofSize: 12.0),
      NSAttributedStringKey.paragraphStyle: paragraphStyle
      ], range: NSMakeRange(0, attrString!.length))

    pieChartView.centerAttributedText =attrString
</code></pre>

<p>希望对你有帮助</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 饼图文本显示不正确?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/49357373/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/49357373/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 饼图文本显示不正确?