选择 iPhone 时如何更改绘图符号的颜色

Posted

技术标签:

【中文标题】选择 iPhone 时如何更改绘图符号的颜色【英文标题】:How to change the color of a plot symbol when selected iPhone 【发布时间】:2012-12-17 17:38:12 【问题描述】:

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

我希望绘图符号在选择时改变其颜色,以便准确查看选择了哪个符号。我查看了 CPTTestApp(在 Core Plot 示例文件夹中)以查看示例,并且根据我在此站点上看到的内容,我必须使用绘图参数,以便决定是否返回自定义符号。但我不知道这个绘图参数是什么。

如何检测选择了哪个符号,以便更改它的颜色?通过使用索引?

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

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

 - (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;

【问题讨论】:

【参考方案1】:

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

为了定位一个选定的点,您必须为您的 CPTScatterPlot 实例设置一个委托以检测触摸事件。 (这里 currentPlot 是我的 CPTScatterPlot 实例)

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]; 
   

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

【讨论】:

谢谢!我很高兴,因为它有效。 :) 之前没有用,因为我没有在 plotSymbolWasSelectedAtRecordIndex 中初始化 selectedIndex。 ;)

以上是关于选择 iPhone 时如何更改绘图符号的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 中更改 UIPickerView 的背景颜色

如何在不选择 RichTextBox 的情况下恢复插入符号位置或更改文本颜色

在 iPhone 上更改 Tabbar 的颜色

如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]

如何更改绘图背景颜色?

UITableViewCell 的选择颜色