我有一个模仿按钮的课程。它包含一个标签,我试图集中(水平)对齐。无论我尝试什么,标签都留在左侧,让我觉得这比看起来更复杂。这是唯一的初始化/设置代码:
-(CCButtonLayer*)initWithText:(NSString*)text bgColor:(ccColor4B)color width:(GLfloat)width height:(GLfloat)height {
self = [super initWithColor:color width:width height:height];
self.lbl = [CCLabelTTF labelWithString:text fontName:@"Marker Felt" fontSize:22];
self.lbl.horizontalAlignment = kCCTextAlignmentCenter;
[self.lbl setHorizontalAlignment:kCCTextAlignmentCenter];
self.lbl.color = ccc3(0,0,0);
// self.lbl.contentSize = CGSizeMake(width, height); // no effect anyway
self.lbl.anchorPoint = CGPointZero;
self.lbl.position = CGPointZero;
[self addChild:self.lbl];
return self;
}
答案 0 :(得分:3)
我删除了标签的对齐属性,并手动对齐。很明显,我看不到的东西正在发生,也许还有另一个偏差,就像你说的那样@ LearnCocos2D
// this worked
CGSize textSize = [self.lbl.string sizeWithFont:[UIFont fontWithName:fontName size:fontSize]];
self.lbl.anchorPoint = CGPointZero;
self.lbl.position = ccp(textSize.width /2.0f, textSize.height/2.0);
答案 1 :(得分:1)
self.lbl.anchorPoint = CGPointZero;
self.lbl.position = CGPointZero;
这两行决定了你的标签的位置。
尝试将它们设置为:
self.lbl.anchorPoint = ccp(0.5, 0.5); //This is default, you could omit
self.lbl.position = ccp(self.contentSize.width / 2.0f, self.contentSize.height / 2.0f);
我假设“self”是按钮,并且此时已设置了内容大小
答案 2 :(得分:1)
正如James所说,更改anchorPoint会影响对齐。因此,不要指定CGPointZero,因为这会将左下角与父级位置对齐。
您仍然看不到任何变化的事实可能表明您没有考虑过标签的位置实际上是父母位置的偏移。现在,如果您也更改了父级的anchorPoint,则标签的位置将偏离父级的左下角。
长话短说:保持anchorPoint不变。除了标签之外,您可以使用anchorPoint来影响对齐。