CCLabelTTF Вертикальное выравнивание (Cocos2D) - PullRequest
1 голос
/ 31 марта 2012
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 Ответ

1 голос
/ 31 марта 2012

Попробуйте написать после первой строки:

label.anchorPoint = ccp([label boundingBox].size.width / 2, [label boundingBox].size.height / 2);

Второе возможное решение состоит в том, чтобы установить его положение непосредственно сверху в соответствии с меткой boundingBox size

...