2014-10-09 5 views
2

나는 SKLabelNodes 콜렉션을 가지고 있습니다. 각 노드는 단어의 문자를 나타냅니다. 각 노드는 SKSpriteNode의 하위 노드입니다. spriteNode에는 명시적인 높이가 설정되어 있습니다 (높이는 [text sizeWithAttributes:@{NSFontAttributeName : font}];입니다). 너비는 labelNode입니다.기준선별로 여러 SKLabelNodes 정렬

labelNodespriteNode의 가운데에 위치하며 verticalAlignmentMode = SKLabelVerticalAlignmentModeBaseline입니다. 나중에 각 글자에 배경 이미지를 설정해야합니다 (spriteNode을 사용하여 완성됩니다). 테스트를 위해, 나는 명백한 문제를, 단색을 사용하여 만드는 중이라서 : 당신이 볼 수 있듯이, 편지의 아래 부분은 'Y'용기 spriteNode 노호 보여주는

enter image description here

. 같은 일이 'g'와 다른 문자들에서도 발생합니다. 각 letterNode (즉, spriteNode 및 자식 labelNode)은 수직으로 가운데에 놓이고 단어의 모든 문자를 포함하는 데 사용되는 안에 가로로 간격을두고 있다고 설명해야합니다. letterNode 생성

코드 :

SKLabelNode *labelNode = [SKLabelNode labelNodeWithText:text]; 
labelNode.fontName = font.fontName; 
labelNode.fontSize = font.pointSize; 
labelNode.fontColor = colour; 
labelNode.position = CGPointMake(0, -floor(height/2)); 
// height is the same explicit height used to create the spriteNode. 

SNLetterNode *letter = [SNLetterNode spriteNodeWithColor:[UIColor lightGrayColor] size:CGSizeMake(labelNode.frame.size.width, height)]; 
letter.letter = text; 
letter.labelNode = labelNode; 
letter.size = CGSizeMake(self.labelNode.frame.size.width, height); 

단어를 모든 문자가 포함 된 SKSpriteNode은과 같이 생성됩니다

CGSize fullWordSize = [text sizeWithAttributes:@{NSFontAttributeName : font}]; 

SNWordNode *word = [SNWordNode spriteNodeWithColor:[UIColor clearColor] size:fullWordSize]; 
word.letterNodes = letterNodes; 
word.text = text; 

나는 문제가 방법 I에 의해 발생되는 것으로 판단 labelspriteNodes의 위치 지정 및 크기 조정 중입니다. 나는 다른 verticalAlignmentModes을 사용하여 시도해 보았고, 그것을 바탕으로 라벨을 재배치했다. 텍스트의 기준선을 기준으로 노드를 정렬하는 방법을 알고 있다면 시작일 것입니다. 회색 배경은 'Y'의 아래 부분을 덮고, 아래로 연장하고, 그것을 위해 에서 발생하는 나는 일이하고 싶은 무엇

, 모든에 관계없이이 같은 그것을 필요 여부에 letterNodes ('와이'). 텍스트가 여전히 기준선에 맞게 조정됩니다.

아무 도움이 많이 받아 들여질 것입니다,

미리 감사드립니다.

답변

2

애플의 문서 (https://developer.apple.com/library/ios/Documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/TypoFeatures/TextSystemFeatures.html)에 따르면,이 예에서 'y'의 테두리가 "디 센더"라고 불리는 부분이 보입니다.

UIFont에는 descender이라는 속성이 있으며,이 값은 강하가 가능한 가장 높은 값을 제공합니다. 나는 SKLabelNode이 들어있는 SKSpriteNode의 크기를 늘리고 레이블을 적절하게 가운데 맞추기 위해 사용했습니다.