2016-04-29 2 views
0

SwiftでiOS-Chartを使用して、データを表示するために折れ線グラフを描画したいと考えています。今、私は各点の横に小さいアイコンを置くという要件があります。iOS-Chartsポイントの横にUIImageを置く方法

enter image description here

今私は、グラフ上でUIImageを追加することができますが、問題は私が正しく、各ポイントのするCGPoint座標を得ることができる方法です。

デバイスまたはデバイスの種類の向きを変更しても、イメージの位置は固定されており、それに応じて変更されることはありません。ここにiPhone 6の写真があります。あなたは次の操作を行うためにLineChartRenderer.swiftprivate func drawCircles(context context: CGContext) を変更することができます

for i in 0..<dataPoints.count { 
     let pointLeft = lineChartView.getPosition(dataEntries[i], axis: .Left) 

     let image = UIImage(named: numbers[i]) 
     let imageView = UIImageView(image:image!) 
     imageView.frame = CGRect(x: pointLeft.x, y: pointLeft.y, width: 16, height: 16) 
     lineChartView.addSubview(imageView) 

    } 

答えて

2

:ここ

enter image description here

は私の現在のコードであるが計算されるループの内側の円が描画されている使用 pt VARをし、次のように追加します。

let image = UIImage(named: numbers[i]) 
image?.drawInRect(CGRect(x: pt.x, y: pt.y, width: 16, height: 16)) 

明らかに、あなたは必要な方法で画像を配置するためにCGRectで遊ぶ必要があります。このメソッドは、デバイス方向が変更されるたびに呼び出されます。

+0

実際には、LineChartRendererから拡張してdrawExtras(CGContext)をオーバーライドできます。これは、drawCircles(CGContext)がfileprivateとして宣言されているためです。 LineChartViewがあれば、新しく拡張されたLineChartRendererにNewChartRenderer(dataProvider:lineChartView、animator:lineChartView.chartAnimator、viewPortHandler:lineChartView.viewPortHandler)を割り当てることができます。 lineChartViewはLineChartView型の単なるIBOutletです。これは私の意見では、元のコードを変更するよりもはるかにクリーンです。 –

関連する問題