sách gpt4 ai đã đi

ios - 忍者 iOS : Pie chart spoke with value and name

In lại 作者:行者123 更新时间:2023-11-29 00:18:41 27 4
mua khóa gpt4 Nike

我想创建带有一点自定义辐条的饼图。

我想要实现的是在辐条上方显示名称 od 数据点,在辐条下方显示值。现在我知道如何用

func sChart(_ chart: ShinobiChart, labelForSliceAt sliceIndex: Int, in series: SChartRadialSeries) -> UILabel?

并将标签行号设置为2.... nhập mô tả hình ảnh ở đây

如何在下面和上面放置一个标签?

đánh dấu

1 Câu trả lời

我已在我们的 shinobicontrols forum 回答了您的问题但我将我的答案粘贴在这里,以防有人看到这篇文章:

如果您不使用辐条,那么执行此操作的方法是使用委托(delegate)方法 sChart:alterLabel:forDatapoint:atSliceIndex:inRadialSeries: 来重新定位标签,但不幸的是目前一个问题,这意味着当显示辐条时,在定位标签之前调用此方法。

我们将尝试在 shinobicharts 的 future 版本中解决此问题,但与此同时,您可以通过创建自己的附加标签并使用 KVO 来解决此问题,如下所示:

func sChart(_ chart: ShinobiChart, labelForSliceAt sliceIndex: Int, in series: SChartRadialSeries) -> UILabel {
let pieSeries = series as! SChartPieSeries
let dp = self.sChart(chart, dataPointAt: sliceIndex, forSeriesAt: 0)
let label = UILabel()
label.text = String(format:"Slice %i", sliceIndex)
label.sizeToFit()
label.addObserver(self, forKeyPath: "frame", options: NSKeyValueObservingOptions(rawValue: 0), context: nil)
label.addObserver(self, forKeyPath: "center", options: NSKeyValueObservingOptions(rawValue: 0), context: nil)
label.layer.addObserver(self, forKeyPath: "frame", options: NSKeyValueObservingOptions(rawValue: 0), context: nil)
label.layer.addObserver(self, forKeyPath: "center", options: NSKeyValueObservingOptions(rawValue: 0), context: nil)

sliceLabels[sliceIndex] = label

let customLabel = UILabel()
customLabel.text = String(format:"Value: %.0f", dp.sChartYValue() as! Float)
customLabel.font = pieSeries.style().labelFont
customLabel.textColor = pieSeries.style().labelFontColor
customLabel.backgroundColor = pieSeries.style().labelBackgroundColor
customLabel.sizeToFit()
chart.canvas.overlay.addSubview(customLabel);
customLabels[sliceIndex] = customLabel;

return label;
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if let changedLabel = object as? UILabel {
for (index, label) in sliceLabels {
if let sliceLabel = label as? UILabel, sliceLabel === changedLabel {
let customLabel = customLabels[index] as! UILabel
customLabel.center = CGPoint(x: sliceLabel.center.x,
y: sliceLabel.center.y + sliceLabel.frame.size.height);
}
}
}
}

请注意,如解释的đây UIKit 并不正式兼容 KVO,但该帖子中的大多数用户都同意那里建议的代码确实有效。 (您可能希望添加比我在此处添加的更多的观察者。)

对于相当长的解决方法,我深表歉意,但希望它对您有所帮助。

关于ios - 忍者 iOS : Pie chart spoke with value and name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44623276/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com