2014-09-13 11 views
10

Mam węzeł SKLabelNode, który jest dzieckiem węzła SKSpriteNode, ponieważ próbuję utworzyć klasę Button, aby tworzyć przyciski w łatwiejszy sposób. Próbowałem kilka rzeczy za pomocą punktu zakotwiczenia SKSpriteNode, ale nie bardzo rozumiem, co się dzieje. Jak wyśrodkować etykietę na ikonce (jest to węzeł nadrzędny)?Wyśrodkuj węzeł SKLabelNode na SKSpriteNode

+0

Jeśli pokażesz, co już próbował, to pomoże nam pomóc. –

+2

Dzięki za szybką odpowiedź. Właśnie zorientowałem się, jak to zrobić. Ustawiam tryby wyrównania (poziome i pionowe) etykiety i są teraz idealnie wyśrodkowane bez względu na rozmiar tekstu etykiety! Opublikuję poniżej. – 02fentym

+0

@ 02fentym chcielibyśmy, abyś pokazał swoje rozwiązanie kodu, zamiast po prostu wyjaśniać, że rozwiązałeś pytanie, które zadałeś, nie pokazując rozwiązania. – nocarrier

Odpowiedz

14

Uświadomiłem sobie, jak rozwiązać ten problem ... Oto, co zrobiłem. Należy pamiętać, że mam klasę o nazwie Button, która jest podklasą SKSpriteNode.

W klasie Button.m mam zmienną instancji o nazwie label, która jest węzłem SKLabelNode. Dodałem węzeł etykiety jako element potomny do przycisku, a następnie ustawiłem poziomy i pionowy tryb wyrównania na środek.

label = [[SKLabelNode alloc] init]; 
[self addChild:label]; 
[label setHorizontalAlignmentMode:SKLabelHorizontalAlignmentModeCenter]; 
[label setVerticalAlignmentMode:SKLabelVerticalAlignmentModeCenter]; 
+1

OK, ale w jaki sposób zadbasz, aby sprajt na zewnątrz (sprite) był wystarczająco duży dla tekstu? – trojanfoe

8

To będzie umieścić etykietę w centrum sceny w zestawie ikonki:

yourLabel.horizontalAlignmentMode = .Center; 
yourLabel.verticalAlignmentMode = .Center