0
円チャート(チャートポッドを使用)でカスタムカラーを使用したいとします。しかし、setColors([NSUIColor])の配列はNSUIColor形式の色の配列を必要とし、色の16進数を持っています。私の16進コードを使用して円グラフでカスタムカラーを実装するにはどうすればよいですか?'[UIColor]'の値を 'NSUIColor'(別名UIColor)に変換できません。
私のコードの機能:カラーコードの
func pieChartUpdate()
{
//future home of pie chart code
let entry1 = PieChartDataEntry(value: Double(10), label: "Morning")
let entry2 = PieChartDataEntry(value: Double(20), label: "Evening")
let entry3 = PieChartDataEntry(value: Double(30), label: "Midday")
let entry4 = PieChartDataEntry(value: Double(40), label: "Before Bed")
let dataSet = PieChartDataSet(values: [entry1, entry2, entry3, entry4], label: "Widget Types")
let data = PieChartData(dataSet: dataSet)
pieChartTime.data = data
pieChartTime.chartDescription?.text = "Share of Widgets by Type"
//All other additions to this function will go here
dataSet.setColors(TimeColorString)
dataSet.valueColors = [UIColor.black]
//This must stay at end of function
pieChartTime.notifyDataSetChanged()
}
は、配列:私はUIColorにHexcodeを変換するために使用してい
let TimeColorString = [UIColor.init(hex: "3366cc"),UIColor.init(hex: "ff9900"),UIColor.init(hex: "dc3912"),UIColor.init(hex: "109618")]
、拡張子は次のとおりです。
//To convert hexcode into UI Color
extension UIColor {
convenience init(hex: String) {
let scanner = Scanner(string: hex)
scanner.scanLocation = 0
var rgbValue: UInt64 = 0
scanner.scanHexInt64(&rgbValue)
let r = (rgbValue & 0xff0000) >> 16
let g = (rgbValue & 0xff00) >> 8
let b = rgbValue & 0xff
self.init(
red: CGFloat(r)/0xff,
green: CGFloat(g)/0xff,
blue: CGFloat(b)/0xff, alpha: 1
)
}
}
'NSUIColor'は何ですか?これはどこに定義されていますか? –
このエラーから、 'dataSet.setColors'は実際には配列ではなく単一の' UIColor'インスタンスを期待しているようです。しかし、あなたの質問に 'setColors'の関数シグネチャを含めてください。いくつかの一般的なアドバイス: '.init'を明示的に呼び出さないで、初期化に' UIColor(hex:) 'の略式構文を使用してください。また、変数と関数のキャメルケースが低いSwift命名規則に従ってください。 –