散乱グラフのプロット シンボルに画像を表示する必要があります。現在、CPTPlotSymbol を使用してグラフにシンボルをプロットしています。しかし、それで取得できるのは、事前定義されたオブジェクトだけです。例えば。ellipsePlotSymbol、dashPlotSymbol、trianglePlotSymbol。
しかし、代わりに画像をプロットする必要があります。
これを達成するのを手伝ってくれませんか。どうもありがとう。
少し試した後、答えを得ました。
まず、カスタム CPTLayer を作成し、その内部で画像を塗りつぶしました。
CustomImageForScatterPlot.h ファイル
#import "CPTLayer.h"
@interface CustomImageForScatterPlot : CPTLayer
{
UIImage *_image;
}
-(id)initWithImage:(UIImage *)image;
@end
CustomImageForScatterPlot.m ファイル
#import "CustomImageForScatterPlot.h"
#import "CPTLayer.h"
@implementation CustomImageForScatterPlot
-(void)dealloc{
[_image release];
[super dealloc];
}
-(id)initWithImage:(UIImage *)image{
CGRect f = CGRectMake(0, 0, image.size.width, image.size.height);
if (self = [super initWithFrame:f]) {
_image = [image retain];
}
return self;
}
-(void)drawInContext:(CGContextRef)ctx{
CGContextDrawImage(ctx, self.bounds, _image.CGImage);
}
@end
今、散布図グラフ ファイルで、次のデリゲート メソッドを使用して画像を返しました
- (CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
{
CustomImageForScatterPlot* layer = [[CustomImageForScatterPlot alloc] initWithImage:[UIImage imageNamed:@"dots.png"]];
layer.frame = CGRectMake(2, 0, 34, 6);
return layer;
}
コーディングを楽しんでください.... :)
datasourceメソッドを使用し-symbolForScatterPlot:recordIndex:
て、強調表示されたポイントに別の記号を返します。画像付きの標準的な長方形のシンボルは、fill
あなたが望むことをします。
これを達成する方法は 2 つあります。1 つ目は、デフォルトのシンボルの 1 つを使用してから、データを繰り返し処理し、各ポイントに画像を含む CPTLayer を使用して CPTPlotSpaceAnnotation を追加することです。もう 1 つの方法は、CPTPlotSymbol のサブクラスを作成し、renderAsVectorInContext をオーバーライドして画像を描画することです。
私が知らないこれを行う直接的な方法があるかもしれません。