在我的应用程序中,我有一个图表,在x轴上我需要显示一些带有背景图像的按钮和每个按钮的动作。我可以添加带有文本的标签作为xaxis标签,如下所示。
int labelLocations = 0;
NSMutableArray *customXLabels = [NSMutableArray array];
for (NSString *day in arrData) {
CPTTextStyle *xaxisTextStyle = [CPTTextStyle textStyle];
xaxisTextStyle.color = [CPTColor colorWithComponentRed:204.0/255.0 green:204.0/255.0 blue:204.0/255.0 alpha:1.0];
xaxisTextStyle.fontSize = 18.0;
xaxisTextStyle.textAlignment = CPTTextAlignmentRight;
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:day textStyle:xaxisTextStyle];
newLabel.tickLocation = [[NSNumber numberWithInt:labelLocations] decimalValue];
newLabel.offset = axisSet.xAxis.labelOffset + axisSet.xAxis.majorTickLength;
newLabel.alignment = CPTAlignmentLeft;
[customXLabels addObject:newLabel];
labelLocations++;
UIImage* backgroundImage = [UIImage imageNamed:@"icon_edit.png"];
CALayer* aLayer = [CALayer layer];
CGFloat nativeWidth = CGImageGetWidth(backgroundImage.CGImage);
CGFloat nativeHeight = CGImageGetHeight(backgroundImage.CGImage);
CGRect startFrame = CGRectMake(newLabel.contentLayer.frame.origin.x+newLabel.contentLayer.frame.size.width,0, nativeWidth, nativeHeight);
aLayer.contents = (id)backgroundImage.CGImage;
aLayer.frame = startFrame;
[newLabel.contentLayer addSublayer:aLayer];
newLabel.contentLayer.backgroundColor = [UIColor redColor].CGColor;
}
axisSet.xAxis.axisLabels = [NSSet setWithArray:customXLabels];
有些人可以帮我添加按钮而不是CPTAxisLabel。
感谢您的帮助
答案 0 :(得分:0)
您可以使用轴委托来检测轴标签上的触摸。实现-axis:labelWasSelected:
方法或其他选择方法之一。轴标签的contentLayer
为CPTTextLayer
,因此您可以添加背景填充和边框,使其看起来像一个按钮。
如果您更愿意使用真实的UIButton
,请将它们添加为图表托管视图的父视图的子视图,而不是托管视图。使用绘图空间将数据坐标转换为像素坐标,以找到与图形对齐的按钮位置。