CCLabelTTF 垂直对齐 (Cocos2D)
Posted
技术标签:
【中文标题】CCLabelTTF 垂直对齐 (Cocos2D)【英文标题】:CCLabelTTF Vertically Align (Cocos2D) 【发布时间】:2012-03-31 02:12:57 【问题描述】:CCLabelTTF *label = [CCLabelTTF labelWithString:@"Vertically Center Me About Myself" dimensions:CGSizeMake(100, 300) alignment:UITextAlignmentCenter lineBreakMode:UILineBreakModeWordWrap fontName:@"Helvetica" fontSize:20];
label.position = ccp(screenwidth/2, screenheight/2);
[layer addChild:label];
所以我创建了上面的标签并将其添加到我的图层中。由于dimensions
参数,文本确实可以正确换行,但只有第一行文本垂直居中(例如,只有第一行文本正好是上面字符高度的50%半屏标记,正好是半屏标记下方字符高度的 50%:
.
.
---Vertically---
Center Me
About Myself
----- 表示 1/2 屏幕(忽略点,它们只是用于 *** 格式)。我如何让它动态地将文本集中在自身的中心?因此,例如在这种情况下,我希望“Center Me”成为居中的内容。如果我的字符串只包含“垂直”,我希望它是居中的,等等......
【问题讨论】:
【参考方案1】:尝试写在第一个字符串之后:
label.anchorPoint = ccp([label boundingBox].size.width / 2, [label boundingBox].size.height / 2);
第二种可能的解决方案是根据标签boundingBox大小直接将其位置设置为上
【讨论】:
anchorPoint 实际上在 CC2D 0.98+ 中使用点(而不是像素),所以我不得不将其更改为:label.anchorPoint = ccp(0.5, 0.5);
。默认情况下,锚点已经是0.5, 0.5
,但是通过在指定新创建的字符串后重置它,它可以正确地重新定位它。 =]以上是关于CCLabelTTF 垂直对齐 (Cocos2D)的主要内容,如果未能解决你的问题,请参考以下文章
text 只需一行SCSS就可以垂直和水平对齐或只是垂直对齐,它同时支持两者。