2017-04-02 3 views
0

私はいくつかのデータをプロットするために素晴らしいCharts libraryを使用しています。私のグラフはChartLimitLineのセットを含んでおり、これらのラインの2つの間の距離は小さいかもしれません。その結果、1つのリミット・ラインのラベルが、次のリミット・ラインに重なることがあります。これを避けるために、テキストを横方向ではなく縦方向に表示するようにラベルを回転したいと思います。私はlimitLine.labelPosition = .leftBottomを使ってラベルを別の位置に移動することができますが、ラベルも回転させる必要があります。 ChartLimitLineとそのAndroid counterpart(iOSライブラリはMPAndroidChartライブラリのクローンです)のソースコードを参照しました。これを実現するAPI関数がないようです。私自身でこれをどのように達成するのですか?私はある種のカスタムビューを構築しなければならないと思っていますが、iOS SDKには比較的新しいので、これにどのようにアプローチするかについての提案は非常に高く評価されます。danielgindi/Charts:ChartLimitLineのラベルを90度回転できますか?

ありがとうございます!

+0

MPAndroidChartでは、カスタムレンダラーを作成する必要があります。ソース内のレンダラークラスを見てください。スタックオーバーフローに関するカスタムレンダラの例もいくつかあります。 –

+0

https://github.com/danielgindi/Charts/blob/master/Source/Charts/Renderers/XAxisRenderer.swift –

答えて

0

回転ラベルテキストのキーポイントは、アンカーポイントがどこにあるかを知ることです。

    は次に、あなただけのあなたが90度の回転を達成したいかに依存し、回転の中心がアンカーポイントであるCGContextRotateCTM()

    ようCoreGraphicsのAPIを使用する必要がある、などのいくつかの方法があり、

  1. アンカーポイントをテキスト矩形の中心に移動し、そこを回転します。
  2. テキスト四角形の左上隅にアンカーポイントを移動し、あなたがどのように考えるように持っているよう

アンカーポイントがどこにあるかに応じて、お使いの回転テキストの最終的な位置は、不確かな存在である回転します回転させたいのですか?そして、アンカーポイントをあなたの位置に適切に移動させて回転させるために数学(sin、cosなど)を行います。

アンカーポイントを移動するには、CGContextTranslateCTM()と他のtranslate APIを使用できます。

あなたは(あなたが今意味a b c d tx tyわからない場合)アフィンは最初の変換行列を理解する必要が

私は非常には、サンプルプロジェクトを作成することをお勧めし、赤の背景色で単一のビューを作成し、回転して黄色の背景色を塗りつぶすと、赤色の矩形から黄色の背景にどのように視点が回転しているかを確認できます。

関連する問題