2017-09-08 55 views
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 
    ) 
    } 
} 
+0

'NSUIColor'は何ですか?これはどこに定義されていますか? –

+0

このエラーから、 'dataSet.setColors'は実際には配列ではなく単一の' UIColor'インスタンスを期待しているようです。しかし、あなたの質問に 'setColors'の関数シグネチャを含めてください。いくつかの一般的なアドバイス: '.init'を明示的に呼び出さないで、初期化に' UIColor(hex:) 'の略式構文を使用してください。また、変数と関数のキャメルケースが低いSwift命名規則に従ってください。 –

答えて

1

は、色を設定します以下のようになります。

あなたがsetColorsを使用したい場合は

、以下の機能がチャートから、次のとおりです。

open func setColors(_ colors: [NSUIColor], alpha: CGFloat) 

open func setColors(_ colors: NSUIColor...) 

がどのように使用する:

dataSet.setColors(TimeColorString, alpha: 1.0) 
関連する問題