- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 x 轴上使用日期标签,并希望使用自定义 View 突出显示特定日期。我计划使用 axis:labelWasSelected:
,将annotationFrame移动到标签位置并在轴范围更改时滚动它(在 plotSpacewillChangePlotRangeToForCoordinate:
中移动注释)(类似于 core plot Framework - How to set custom UIView in CPTPlotSpaceAnnotation )
从 plotSpacewillChangePlotRangeToForCoordinate 调用时如何获取标签的坐标?
编辑:我已经成功实现了由用户选择调用的移动注释:我保存 _selectedLabel
并在绘图范围发生变化时发送 newFrame。有两个问题:
更改范围时注释框的延迟 - 看电影:https://www.youtube.com/watch?v=R66ew6GAiJU&feature=youtu.be
当带注释的标签离开屏幕时,_selectedLabel
被“遗忘”。当移回屏幕时,可能会创建新标签,并且我对旧对象->框架的 _selectedLabel
引用仍保持在 x=0(离开屏幕的点)。也许有可能以某种方式获取特定标签的坐标(基于与 dateToAnnotate 的比较)?
-(void)axis:(CPTAxis *)axis labelWasSelected:(CPTAxisLabel *)label {
NSLog(@"labelWasSelected: %@",label);
_selectedLabel = label;
CGRect graphLabelFrame = [self adjustAnnotationFrameForLabel:_selectedLabel];
[_delegate datesPlot:self didAnnotateFrame:graphLabelFrame animating:YES];
}
-(CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(nonnull CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate {
CGRect graphLabelFrame = [self adjustAnnotationFrameForLabel:_selectedLabel];
[_delegate datesPlot:self didAnnotateFrame:graphLabelFrame animating:NO];
}
在委托(delegate)中:
-(void)datesPlot:(datesPlot*) plot didAnnotateFrame:(CGRect)frame animating:(BOOL)animating{
if (animating) {
[UIView animateWithDuration:0.3 animations:^{
_annotationView.frame = [self.view convertRect:frame fromView:_datesHostingView];
}];
}
else {
_annotationView.frame = [self.view convertRect:frame fromView:_datesHostingView];
}
[_annotationView setNeedsLayout];
}
编辑2:adjustmentAnnotation - 添加间距并将框架转换为图形坐标 setNeedLayout
在转换为父 View 的坐标后由委托(delegate)调用。
-(CGRect)adjustAnnotationFrameForSelectedLabel {
NSLog(@"selected Label:\n %@", _selectedLabel);
float annotationMargin = 20;
CGRect labelFrame = _selectedLabel.contentLayer.frame;
NSLog(@"labelframe: x: %f, y: %f", labelFrame.origin.x, labelFrame.origin.y );
//add margin for annotation to label's frame
CGRect annotationFrame = CGRectMake(labelFrame.origin.x-annotationMargin/2, labelFrame.origin.y-annotationMargin/2,
labelFrame.size.width+annotationMargin, labelFrame.size.height+annotationMargin);
// convert from plot area coordinates to graph (and hosting view) coordinates
CGRect graphLabelFrame = [self.graph convertRect:annotationFrame fromLayer:self.graph.plotAreaFrame.plotArea];
NSLog(@"graphLabelFrame: x: %f, y: %f", graphLabelFrame.origin.x, graphLabelFrame.origin.y );
return graphLabelFrame;
}
最佳答案
-axis:labelWasSelected:
方法的第二个参数是轴标签。标签的contentLayer
是一个实际显示标签的CALayer
子类。使用内置的坐标转换方法将 contentLayer
的 frame
和/或 bounds
转换为注释的 的坐标空间annotationHostLayer
.
关于ios - Coreplot - 轴标签的坐标和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38053247/
有人知道如何在 CorePlot 图形中去掉绘图区域框的外边距吗?我的 iPhone 应用程序中没有太多可用空间来显示它,因此我希望绘图区域框架与整个 View 尺寸相匹配。 考虑到: 修改填充不会影
我有一个带有 CorePlot 图表的 iPhone 应用程序。我希望用户能够像默认功能一样放大和缩小图表,除了一件事: 当用户水平捏合时 -> 缩放 x 轴。 垂直 -> 缩放 y 轴。 对角线 -
在 iPhone 应用程序中,我使用核心 Plot 垂直条形图。 如何消除竖条中的阴影效果? 这里如图所示,条形图显示有阴影 这是代码: CPBarPlot *barPlot = [CPBarPlot
我正在 iPhone 上使用 CorePlot。我可以做一个简单的图表。但我想做的是让 y 轴从 0 到 100,x 轴从 1998 年到 2007 年。如果可能的话,我想保留这个数字(不是基于自定义
我有 OS X 应用程序的图表,可以随窗口调整大小。我预计当宽度减小得足够多时,图例将被截断或剪裁。然而,它溢出到绘图区域之外,如下所示。理想情况下,我希望图例截断或至少剪辑内容。如何做到这一点? 我
我想编写一个自动滚动的绘图,因此实际时间位于右侧。 (标记为红色) 数据按时间间隔不规则地添加。我怎样才能做到这一点?我已经有一个滚动图(基于 coreplot 提供的示例代码)。但它并不完全准确并且
我在当前的项目中使用CorePlot及其惊人功能。 我遇到的唯一问题是轴和网格的长度。 我只使用左侧和底部带有标签的正坐标系。 我的问题是轴和网格在标签方向上的长度。 我尝试使用: axisSet.x
我试图绘制一个散点图,经过一段时间的探索后,轴标签正确了。我将标签策略设置为none,并添加了自己的自定义标签。但是由于某种原因,即使我使用了不同的示例数据,它也只能画一条直线。这是模拟器的图形图片
我整天都在研究这个,但仍然毫 headless 绪。我制作了两个数据集并将它们放入字典中,然后将其用作绘图的数据源。一切都应该工作,但它仍然只显示一个图表。 有趣的是,如果我更改 PLOT_IDENT
我正在尝试使用 CorePlot 绘制 iPhone 上传感器收集的数据,我几乎完成了它,但是 Coreplot 的初始化非常非常慢。这是我在 viewDidLoad 方法中的代码: CPTG
在我的应用程序中,我有一个 CorePlot,它托管三个散点图,我还配置如下, let borderStyle = CPTMutableLineStyle() border
在我的应用程序中,我使用 Core-plot 库来绘制垂直条形图。当用户点击栏时,它应该导航到另一个 View Controller 。 (它将离开同一 View Controller 的实例)。当我
我希望捕获 CorePlot 中轴标签的触摸事件。我知道现有的 plot:dataLabelWasSelectedAtRecordIndex: 方法,该方法类似,但不完全是我所希望的(我想要标签,而不
我正在使用 CorePlot 的 ScatterPlot 并想创建一个图例。图例应包含一个小于等于 符号。有什么办法吗? 最佳答案 将绘图的 title 或 attributedTitle 属性设置为
我正在尝试在 CorePlot 中的 y 轴上创建水平渐变: CPTGradient *axisGradient = [CPTGradient gradientWithBeginningColor:[
有什么方法可以根据片段的大小缩放片段的文本标签/图例。例如,如果它们的分段非常小,则标签的大小/比例会减小,以免被分隔符切断。 示例: 谢谢! 最佳答案 绘图不会自动调整标签,但您可以使用自定义数据标
这是一张我认为可以快速说明问题的图片。您只需从 git hub 下载示例,转到曲线散点图示例并点击一个点即可显示点注释,然后只需滚动图表即可将点移出图表。 所以通常我们希望注释 float 在所有内容
我正在使用 coreplot 绘制这样的散点图: 我使用了 4 个不同的图(按颜色显示),并通过在每个“条形”的开头/结尾添加 0 值点来创建“类似条形”的感觉。我想确定用户选择了哪个栏,然后更改其他
我正在尝试使用 NSAttributedString 为 coreplot 创建自定义标签。当我的字符串只有 1 行时一切正常。 当我想使用代码有 2 行字符串时出现问题: NSMutableAttr
我在 x 轴上使用日期标签,并希望使用自定义 View 突出显示特定日期。我计划使用 axis:labelWasSelected: ,将annotationFrame移动到标签位置并在轴范围更改时滚动
我是一名优秀的程序员,十分优秀!