Charts是做什麼的:
在我們平時的開發中,當使用到一些統計圖表的時候,我們該怎樣去做那些柱形的統計圖、那些折線統計圖、扇形統計圖,亦或是你在做金融相關的項目那些股票走勢等等的UI我們改怎樣做?上面說的這麼多全都可以用今天我們說的主角——Charts來解決,這次我們說這個就從它的內建開始,再到對它一些簡單的說明,最後用幾個Demo來認識一下這個三方,在最後我也會相應的給出下面幾個Demo的源碼供大家參考。
Charts在git的位址先給大家 來看看它的一個內建:
Charts是用Swift寫的,這裡我推薦的使用Cocoapods來內建,下面是指令行截圖,當然肯定還有不适用Cocoapods的,下面也有一篇文章的連結,很詳細的說明了手動內建的過程:

要是不使用Cocoapods,你可以在這裡看看這篇文章: iOS在OC項目中內建Charts繪制圖表架構
讓Charts在你腦海中有這個印象,下面是對它整體的使用的一個類型的說明:
LineChartView ----- 折線圖
BarChartView ----- 柱狀圖
CandleStickChartView ----- K線圖
PieChartView ----- 餅狀圖
RadarChartView ----- 雷達圖
一 :折線Demo的運作效果:
上面就是折線圖的運作效果,總結一下折線圖代碼中重要的地方:
1、ChartYAxis 這個類表示的就是Y軸,看字面意思也能了解, Axis就是軸的意思。當然我們說的重點不是這個,是它的執行個體的valueFormatter屬性,看下面:
仔細看看你就看到這個屬性類型,一個遵守了ChartAxisValueFormatter協定的任意類型,以前有一些代碼寫的時候是直接寫一個NSNumberFormatter指派的,應該是以前版本的時候是這樣的,現在這個版本類型改變。
2、初始化方法的改變:
先看看下面兩句,一個是初始化ChartDataEntry的子類BarChartDataEntry的方法,一個是初始化PieChartDataSet類的方法:
應該也是版本的問題,在新的版本中我們是找不到上面兩個方法的,也就是 initWithValue: xIndex: 和 initWithYVals: label: 這兩個方法,相應的我們能夠正常使用的是下面這樣:
二:柱狀Demo的效果
柱狀就是BarChartView類型,具體的代碼和注意的東西我加了詳細的注釋在Demo裡面,這裡看看ChartViewDelegate的代理方法:
<code>#pragma mark -- ChartViewDelegate</code>
<code>//點選選中柱形時回調</code>
<code>- (</code><code>void</code><code>)chartValueSelected:(ChartViewBase * _Nonnull)chartView entry:(ChartDataEntry * _Nonnull)entry dataSetIndex:(</code><code>NSInteger</code><code>)dataSetIndex highlight:(ChartHighlight * _Nonnull)highlight{</code>
<code> </code>
<code> </code><code>NSLog</code><code>(@</code><code>""</code><code>);</code>
<code>}</code>
<code>//沒有選中柱形圖時回調,當選中一個柱形圖後,在空白處輕按兩下,就可以取消選擇,此時會回調此方法</code>
<code>- (</code><code>void</code><code>)chartValueNothingSelected:(ChartViewBase * _Nonnull)chartView{</code>
<code> </code><code>NSLog</code><code>(@</code><code>"---chartValueNothingSelected---"</code><code>);</code>
<code>//放大圖表時回調</code>
<code>- (</code><code>void</code><code>)chartScaled:(ChartViewBase * _Nonnull)chartView scaleX:(CGFloat)scaleX scaleY:(CGFloat)scaleY{</code>
<code> </code><code>NSLog</code><code>(@</code><code>"---chartScaled---scaleX:%g, scaleY:%g"</code><code>, scaleX, scaleY);</code>
<code>//拖拽圖表時回調</code>
<code>- (</code><code>void</code><code>)chartTranslated:(ChartViewBase * _Nonnull)chartView dX:(CGFloat)dX dY:(CGFloat)dY{</code>
<code> </code><code>NSLog</code><code>(@</code><code>"---chartTranslated---dX:%g, dY:%g"</code><code>, dX, dY);</code>
三: PieChartView 餅狀圖
看到這了其實我在練習Demo的時候,感覺和前面那些都差不多一個道理,隻不過就是類型不一樣而已吧,可能裡面還是會涉及到一些具體的屬性差別,下面是餅狀的圖效果:
四:雷達狀Demo的運作效果
本文轉自xsster51CTO部落格,原文連結:http://blog.51cto.com/12945177/1951671 ,如需轉載請自行聯系原作者