Xcode 如何将标签核心图移到右侧?
我使用以下方法显示绘图的标签:Xcode 如何将标签核心图移到右侧?,xcode,core-plot,padding,Xcode,Core Plot,Padding,我使用以下方法显示绘图的标签: -(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index{ ... CPTTextLayer *label=[[CPTTextLayer alloc] initWithText:stringValue style:textStyle]; } 对于每个索引,都应该返回标签 我知道可以使用以下方法上下移动标签: plot.labelOffset=10; 问题是:
-(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index{
...
CPTTextLayer *label=[[CPTTextLayer alloc] initWithText:stringValue style:textStyle];
}
对于每个索引,都应该返回标签
我知道可以使用以下方法上下移动标签:
plot.labelOffset=10;
问题是:如何将标签向右移动一点?
我试着用
label.paddingLeft=50.0f代码>
但是它不起作用。在您的示例中添加填充确实起作用,但可能不是您所期望的方式。散点图和条形图将使标签位于每个数据点上方的中心(具有正偏移)。填充物使整个标签更宽,因此当居中时,测试显示为偏侧。这很难控制,尤其是如果标签文本的长度不同
有一个悬而未决的问题需要解决()。无法保证何时修复,但这是我们正在研究的问题。我遇到了相同的问题,并提出了不同的解决方案
我决定使用CPTAxisLabel方法initWithContentLayer创建标签:
CPTTextLayer *textLayer = [[CPTTextLayer alloc] initWithText:labelStr style:axisTextStyle];
CGSize textSize = [textLayer sizeThatFits];
// Calculate the padding needed to center the label under the plot record.
textLayer.paddingLeft = barCenterLeftOffset - textSize.width/2.0;
CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithContentLayer:textLayer];
此处,barCenterLeftOffset是打印记录中心的偏移量
我写了一篇关于这一点的文章:
我创建的使用此解决方案的演示项目位于:
您可以将CPTTextLayer子类化并包含偏移量
@interface WPTextLayer : CPTTextLayer
@property (nonatomic) CGPoint offset;
@end
@implementation WPTextLayer
-(void)setPosition:(CGPoint)position
{
CGPoint p = CGPointMake(position.x + self.offset.x, position.y + self.offset.y);
[super setPosition:p];
}
然后使用:
WPTextLayer *tLayer = [[WPTextLayer alloc] initWithText:@"blah" style:textStyle];
tLayer.offset = CGPointMake(3, -3);
return tLayer;
这可能会产生我不知道的后果,但到目前为止它似乎正在发挥作用。也有同样的问题。要向左移动标签。现在有什么解决方案吗?增加标签文本层内的paddingRight
。