我在我的第一个iPad项目中使用Core Plot 0.9。我需要创建一个水平条形图,并在左边创建与每个条形中心对齐的UIButtons,每个条形一个按钮,参见附加的screenshot。
我的设置非常简单:
我有一个自定义UIView子类,它充当容器。 在其中,我有2个子视图:一个CPTGraphHostingView和一个包含我的UIButtons的UIView。 我在CPTGraphHostingView中托管了一个CPTXYGraph,并指定了一些填充值。
在我的自定义类中,我有一个方法,一旦设置了dataSource就会创建按钮:
for (int i = 0; i < nbRecords; i++) {
// grab the bar location and create a plot point for it
NSNumber* loc = [dataSource numberForPlot:plot field:CPTBarPlotFieldBarLocation recordIndex:i];
double plotPoint[2] = {0, [loc doubleValue]};
// Convert the plot point to plot area space coordinates (I guess ;))
CGPoint viewPoint = [graph.defaultPlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint];
// Convert the view point to the button container layer coordinate system
CGPoint p = [graph convertPoint:viewPoint fromLayer:graph.plotAreaFrame.plotArea];
// Create the button
CGRect rect = CGRectMake(0, p.y - 11, 100, 22);
UIButton *btn = [[UIButton alloc] initWithFrame:rect];
[btn setTitle:@"test" forState:UIControlStateNormal];
[buttonView addSubview:btn];
[self addSubview:btn];
[array addObject:btn];
[btn release];
}
按钮已创建但对齐效果不佳...我注意到如果我将所有图形填充设置为0,则按钮对齐(但当然我需要填充)。
我是否遗漏了积分转换中的某些内容或步骤?关于如何将plotAreaPoint坐标转换为任何其他UIView,我有点困惑......!
答案 0 :(得分:0)
好的我自己想出了问题。事实上,我在图表有机会布局之前添加了按钮。在循环之前调用图形的方法-layoutIfNeeded:
解决了对齐问题