Core-Plot Mac:在图中的鼠标悬停点显示标签
问题描述:
我正在用Core-Plot制作一个漂亮图形的mac osx应用程序。它的一个折线图(scatterplot)上有多个点,可以用一个plotsymbol圈显示出来。 我的目标是在用户将鼠标悬停在图表上的一个点上时显示一个标签,其中包含点的值。Core-Plot Mac:在图中的鼠标悬停点显示标签
我已经添加了NSTracking到图表,这个工程,但我迷失在如何翻译坐标点/ plotsymbol到坐标,所以我知道什么时候翻转一个点并显示标签。
有人有想法吗? 谢谢沿着这些线路的所有
答
我的解决办法是什么:
(我假设图不显示任何标签,只有当鼠标在图表上的一个点被显示的标签。)
在你处理鼠标逻辑的地方,你会怎么做:
NSDecimalNumber *tickLocation = [NSDecimalNumber numberWithDouble:"The relevant axis value of the object you have the mouse over"];
NSString *labelText = @"The text of the label";
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:1];
CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText: labelText textStyle:axisSet."Whatever axis you want -X/Y".labelTextStyle];
label.tickLocation = [tickLocation decimalValue];
label.offset = axisSet."Whatever axis you want -X/Y".labelOffset + axisSet."Whatever axis you want -X/Y".majorTickLength;
label.rotation = M_PI/4;
[customLabels addObject:label];
axisSet."Whatever axis you want -X/Y".axisLabels = [NSSet setWithArray:customLabels];
希望这有助于。
答
您可以使用-indexOfVisiblePointClosestToPlotAreaPoint:
方法找出哪个图形符号最接近某个像素。此方法返回该点的数据源索引;您可以查看数据源提供的原始数据以获取实际值。 plotSymbolMarginForHitDetection
属性控制点注册为点击之前该点必须与给定点有多接近。