使用图库样本散点图,我将其破解为添加几个图,无线,每个都有一个符号 - 16x16圈我按颜色选择绘图。我想在这个符号上面放一个2个字符的文本标签(我在这里偷走了其他地方):
- (nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot recordIndex:(NSUInteger)index
{
CPTPlotSymbol * symbol = nil;
symbol = [CPTPlotSymbol ellipsePlotSymbol];
symbol.fill = [CPTFill fillWithImage:cptSymbols[index % BET_MAXIMUM]];
symbol.size = CGSizeMake(16,16);
return symbol;
}
- (CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
{
NSString * symbolName = [cptSymbols[index % BET_MAXIMUM] substringToIndex:2];
CPTTextLayer * label = [[CPTTextLayer alloc] initWithText:symbolName];
CPTMutableTextStyle * textStyle = [label.textStyle mutableCopy];
plot.labelOffset = 0;
textStyle.color = cptColors[Random(cptColors.count)];
label.textStyle = textStyle;
[textStyle release];
return [label autorelease];
}
但文本分层我需要将它放在符号的中心;选择其颜色以与符号颜色形成对比。在它的最终形式中,标签将由符号数组cptSymbols []和颜色cptColors []驱动,这些数据构成了数据捕获选择的基础。
我可以影响哪些CPTTextLayer或CPTPlotSymbol属性做标签相对于其数据符号的定位?
动画开始滚动后,最新的散点不再有标签!?该示例通过计时器生成单个值,这符合我的需求 - 计时器,但每次捕获我可以有几个点。
动画开始后,如何将文本标签保持为符号?
最后,在移动,滚动,捏合/缩放时,显示屏显示有点锯齿状。
可以调整它以保持原始的平滑滚动吗?
谢谢!
答案 0 :(得分:0)
使用图表的labelOffset
来控制标签和数据点之间的间距。
应该为每个新数据点调用-dataLabelForPlot:recordIndex:
方法,就像绘图要求新数据一样。我们需要查看您的图表设置和数据源代码,以帮助进一步排除故障。
绘图性能取决于许多因素:您使用的硬件,数据点的数量,要绘制的不同元素的数量等。要查看的常见事项是将所有未使用的填充和线条样式设置为{ {1}}因此Core Plot可以跳过绘制这些元素,使用纯色而不是渐变或图像填充,最大限度地减少透明度的使用。此外,最小化网格线和轴标签的数量,以减少每个动画帧需要移动和/或重绘的元素数量。