Ios 选择iPhone时如何更改打印符号的颜色

Ios 选择iPhone时如何更改打印符号的颜色,ios,select,plot,highlight,symbols,Ios,Select,Plot,Highlight,Symbols,我在这个网站上发现了类似的问题,我尝试了一些方法,但没有成功 我希望打印符号在选中时更改其颜色,以便准确地查看所选的符号。我查看了Core Plot examples文件夹中的CPTTestap,以查看示例,从我在本网站上看到的内容来看,我必须使用Plot参数,以决定是否返回自定义符号。但我不知道这个绘图参数是什么 如何检测选定的符号以更改其颜色?通过使用索引 很抱歉,对于如何使用此方法有点困惑。我做了研究,我会继续,但也许有人有一个想法 我找到了一个方法symbolForScatterPlot

我在这个网站上发现了类似的问题,我尝试了一些方法,但没有成功

我希望打印符号在选中时更改其颜色,以便准确地查看所选的符号。我查看了Core Plot examples文件夹中的CPTTestap,以查看示例,从我在本网站上看到的内容来看,我必须使用Plot参数,以决定是否返回自定义符号。但我不知道这个绘图参数是什么

如何检测选定的符号以更改其颜色?通过使用索引

很抱歉,对于如何使用此方法有点困惑。我做了研究,我会继续,但也许有人有一个想法

我找到了一个方法symbolForScatterPlot,它应该给我预期的结果,但是我不知道selectedIndex是什么变量,我应该如何声明它,以及在哪里使用它。我从这里开始采用这种方法 看起来是这样的:

 - (CPPlotSymbol *)symbolForScatterPlot:(CPScatterPlot *)plot recordIndex:(NSUInteger)index
{   
CPMutableLineStyle *symbolLineStyle = [CPMutableLineStyle lineStyle];
symbolLineStyle.lineColor = [CPColor blackColor];
CPPlotSymbol *plotSymbol = [CPPlotSymbol ellipsePlotSymbol];
plotSymbol.lineStyle = symbolLineStyle;

if (_selectedIndex != NSNotFound && index == _selectedIndex) 
{
    plotSymbol.symbolType = CPPlotSymbolTypeDiamond;
    plotSymbol.size = CGSizeMake(12, 12);
    plotSymbol.fill = [CPFill fillWithColor:[CPColor redColor]];
}
else
{
    plotSymbol.symbolType = CPPlotSymbolTypeEllipse 
    plotSymbol.size = CGSizeMake(8, 8);
    plotSymbol.fill = [CPFill fillWithColor:[CPColor greenColor]];  
}
return plotSymbol;
}

看起来您的问题分为两部分:首先定位选定点,然后更改其颜色

要定位选定点,必须为CPTSatterPlot实例设置代理,以便检测触摸事件。这里currentPlot是我的cptspatterplot实例

currentPlot.delegate                        = self;
currentPlot.plotSymbolMarginForHitDetection = 10.0f;
第二行为触摸事件的检测提供一定的余量。这个值是任意选择的,在我的例子中10看起来不错

然后,您可以添加plotSymbolWasSelectedAtRecordIndex方法,该方法将在选择点后调用:index参数是所选点的索引

-(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index
{
    selectedIndex = index;

    // do some other stuff, adding a label for example

    [plot reloadData]; 
}   

由于选定点现在已定位,因此可以使用链接的函数不要忘记设置CPTSatterPlot实例的数据源来重新绘制绘图。当重新加载CPTSatterPlot实例时,将为绘图的每个索引调用此函数。技巧是,如我的代码示例所示,在选择点时调用reloadData

您的问题似乎分为两部分:首先定位选定点,然后更改其颜色

要定位选定点,必须为CPTSatterPlot实例设置代理,以便检测触摸事件。这里currentPlot是我的cptspatterplot实例

currentPlot.delegate                        = self;
currentPlot.plotSymbolMarginForHitDetection = 10.0f;
第二行为触摸事件的检测提供一定的余量。这个值是任意选择的,在我的例子中10看起来不错

然后,您可以添加plotSymbolWasSelectedAtRecordIndex方法,该方法将在选择点后调用:index参数是所选点的索引

-(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index
{
    selectedIndex = index;

    // do some other stuff, adding a label for example

    [plot reloadData]; 
}   

由于选定点现在已定位,因此可以使用链接的函数不要忘记设置CPTSatterPlot实例的数据源来重新绘制绘图。当重新加载CPTSatterPlot实例时,将为绘图的每个索引调用此函数。技巧是,如我的代码示例所示,在选择点时调用reloadData

谢谢大家!!我很高兴,因为它起作用了它以前不起作用,因为我没有在plotsymbolwasselectedatreecordindex中初始化selectedIndex;非常感谢。我很高兴,因为它起作用了它以前不起作用,因为我没有在plotsymbolwasselectedatreecordindex中初始化selectedIndex;