2012-02-20 7 views
0

私のグラフの中で私のラベルの背後にあるイメージを取得するにはどうすればいいですか? 【下記にImageLayer:グラフinsertSubLayer Y]のイメージを追加自分のラベルの後ろに、そして私のプロットの前に私のcoreplotグラフの中に置く

CPTPlotSpaceAnnotation *imageAnnotation; 
    CGRect imageRect = CGRectMake(0, 0 , 480, 320); 
    CPTBorderedLayer * ImageLayer = [[CPTBorderedLayer alloc] initWithFrame:imageRect]; 
    ImageLayer.fill = [CPTFill fillWithImage:[CPTImage imageWithCGImage:[[UIImage imageNamed:@"Overlay_3_digits.png"] CGImage]]]; 
    imageAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:plotSpace anchorPlotPoint:nil]; 
    imageAnnotation.contentLayer = ImageLayer; 
    [graph addAnnotation:imageAnnotation]; 
    [graph addSublayer:ImageLayer]; 
    [newImagelLayer release]; 
    [imageAnnotation release]; 

:私はグラフの前に画像を置くを成功しました。これはグラフと軸ラベルの前に画像を配置します。誰かが私を助けることを願っています。

EDIT: 私はシミュレータからスクリーンショットを追加しました。 3つの黒い四角形は、私のプロットの前とラベルの後ろにある必要があります。ラベルは読みやすくなります。

Simulator screenshot of my graph

私も最初のインデックスでaxislabelsを置くことによって、私のグラフから層の階層をeditted:

NSArray *chartLayers = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:CPTGraphLayerTypeAxisLabels], 
                  [NSNumber numberWithInt:CPTGraphLayerTypePlots], 
                  [NSNumber numberWithInt:CPTGraphLayerTypeMajorGridLines], 
                  [NSNumber numberWithInt:CPTGraphLayerTypeMinorGridLines], 
                  [NSNumber numberWithInt:CPTGraphLayerTypeAxisLines], 
                  [NSNumber numberWithInt:CPTGraphLayerTypeAxisTitles], 

                  nil]; 
    graph.topDownLayerOrder = chartLayers; 

私はまた、グラフ内の私のイメージを置くことのより良い方法を発見しました。私は新しいhostlayerによってこれをした:

私は私のラベルの後ろにプロットの前に3枚の黒い三角形の画像を置くことができる方法
CPTAnnotationHostLayer *newHostLayer = [[CPTAnnotationHostLayer alloc] 
            initWithFrame:CGRectMake(0, 0, 480, 220)]; 
    UIImage * annotationBG = [UIImage imageNamed:@"Overlay_3_digits.png"];  

    newHostLayer.backgroundColor = [UIColor colorWithPatternImage:annotationBG].CGColor; 

任意のアイデア?

答えて

0

-addAnnotation:メソッドはレイヤーツリーを更新します。あなたは-addSublayer:への通話を削除する必要があります。

画像をグラフの背景に完全に塗りつぶしますか?その場合は、注釈を作成する代わりにグラフ上にfillを設定するだけです。

graph.fill = [CPTFill fillWithImage:[CPTImage imageWithCGImage:[[UIImage imageNamed:@"Overlay_3_digits.png"] CGImage]]]; 

各ラベルの背後にボックスを置くには、カスタムラベルを使用できます。注釈の場合と同じ方法でCPTBorderedLayerを作成します。ボーダーレイヤのサブレイヤとしてラベルテキストを含むCPTTextLayerを追加します。ボーダーレイヤーをカスタムラベルのcontentLayerにします。これにより、topDownLayerOrderも変更する必要がなくなります。

+0

私は、画像を追加することに成功、私のグラフの目の前にしてaxislabelsが上になるように、私はgraph.topDownLayerOrderの階層を変更axislabelsの後ろに配置する画像たい - > CPTAnnotationHostLayer * newHostLayer = [[CPTAnnotationHostLayerのalloc] initWithFrameを:CGRectMake(0、0、480、220)]; UIImage * annotationBG = [UIImage imageNamed:@ "Rechts.png"]; newHostLayer.backgroundColor = [UIColor colorWithPatternImage:annotationBG] .CGColor; 最後の行:[graph insertSublayer:newHostLayer below:y];ラベルの上に画像を配置する – BarryK88

+0

新しく作成されたhostLayerがラベルの後ろにあり、プロットの前にあるように階層をどのように変更することができますか? y軸を削除して新しいサブレイヤで再度設定すると、新しいホスト層をaxislayerの下にあるサブレイヤとして設定できますか? – BarryK88

+0

私はあなたがこれを考えすぎて、もっと複雑にする必要があると感じていますが、解決策を明確にするのに十分なほどうまくやっていることを描写することはできません。達成しようとしているエフェクトのモックアップ画像を投稿できますか? –

関連する問題