博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CorePlot学习六---点击scatterPlot中的symbol点时弹出对应的凝视
阅读量:5864 次
发布时间:2019-06-19

本文共 2942 字,大约阅读时间需要 9 分钟。

因为项目须要用到用户点击 symbol时,弹出对应的具体信息,发现国内解说的比較少,经过一番搜索验证最终解决,先看效果图:

详细须要改动的代码例如以下:

首先要引用托付方法:CPTScatterPlotDelegate、CPTPlotSpaceDelegate

完毕例如以下:

#pragma mark -#pragma mark CPTPlotSpaceDelegate methods-(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceCancelledEvent:(UIEvent *)event{    return YES;}-(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent:(UIEvent *)event atPoint:(CGPoint)point{    return YES;}-(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceDownEvent:(UIEvent *)event atPoint:(CGPoint)point{    NSLog(@"you putdown at point:%@",[NSValue valueWithCGPoint:point]);    return YES;}-(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceDraggedEvent:(UIEvent *)event atPoint:(CGPoint)point{    return YES;}#pragma mark - #pragma mark CPTScatterPlotDelegate//当我们选择对应的点时。弹出凝视:-(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)idx withEvent:(UIEvent *)event{    if ( symbolTextAnnotation ) {        [xyGraph.plotAreaFrame.plotArea removeAnnotation:symbolTextAnnotation];        symbolTextAnnotation = nil;    }    // Setup a style for the annotation    CPTMutableTextStyle *hitAnnotationTextStyle = [CPTMutableTextStyle textStyle];    hitAnnotationTextStyle.color    = [CPTColor greenColor];    hitAnnotationTextStyle.fontSize = 10.0f;    hitAnnotationTextStyle.fontName = @"Helvetica-Bold";        // Determine point of symbol in plot coordinates    NSNumber *x          =    [[datasForPlot objectAtIndex:idx] valueForKey:@"x"];    NSNumber *y          = [[datasForPlot objectAtIndex:idx] valueForKey:@"y"];    NSString *date = [[datasForPlot objectAtIndex:idx]valueForKey:@"date"];        NSArray *anchorPoint = [NSArray arrayWithObjects:x, y, nil];    // Add annotation    // First make a string for the y value    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];    [formatter setMaximumFractionDigits:2];    NSString *yString = [formatter stringFromNumber:y];    NSString *myString = [NSString stringWithFormat:@"温度:%@\n日期:%@\n事件:%@",yString,date,nil];        // Now add the annotation to the plot area    CPTTextLayer *textLayer = [[CPTTextLayer alloc] initWithText:myString/*yString*/ style:hitAnnotationTextStyle];    symbolTextAnnotation              = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:xyGraph.defaultPlotSpace anchorPlotPoint:anchorPoint];    symbolTextAnnotation.contentLayer = textLayer;    symbolTextAnnotation.displacement = CGPointMake(0.0, 20.0);    [xyGraph.plotAreaFrame.plotArea addAnnotation:symbolTextAnnotation];   // NSLog(@"index:%lu,event:%@",(unsigned long)idx,event);}
千万别忘记了依据自定义的设置对应的delegate = self;

红色标注的就是我们实现该功能的重点

对了。忘记说一点,该点很重要。不然你手指点击不灵活。我们的symbol那么小。还要点击到它的中心才干触发以下的方法,这多难啊,有个參数设置一下就搞定了,设置它的触发范围:

CPTScatterPlot *boundLinePlot = [[CPTScatterPlot alloc]init];    boundLinePlot.plotSymbolMarginForHitDetection = 5.0f;//设置symbol点的外沿范围。以用来检測手指的触摸
ok搞定

其它的看凝视。不想再多加说明了

代码传送门:

你可能感兴趣的文章
Android之NDK开发
查看>>
让kbmmw 4.8 支持ios 64
查看>>
CentOS下如何查找大文件
查看>>
android ImageView scaleType属性
查看>>
javascript中日期格式与时间戳之间的转化
查看>>
Sql Server系列:查询分页语句
查看>>
JavaScript. The core.
查看>>
VoltDB公布4.0版本号,大步提高内存实时分析速度,进军操作数据库市场
查看>>
Visual Studio跨平台开发实战(1) - Hello Xamarin!
查看>>
JavaScript 语言基础知识点总结(思维导图)
查看>>
The connection to adb is down, and a severe error has occured.问题解决方法小结
查看>>
cppunit使用详解
查看>>
SVN的Hooks功能--强制添加注释
查看>>
gdbserver 移植与多线程调试
查看>>
python判断文件和文件夹是否存在、创建文件夹
查看>>
AngularJs 表单提交按钮状态
查看>>
数据绑定(八)使用Binding的RelativeSource
查看>>
2015自然基金一审结果:项目申请的共性问题。
查看>>
咏史---左思
查看>>
Linux中find用法
查看>>