2012-09-21 23 views
3

我有一個動態文本CCLabelTTF。假設它的最大尺寸爲200,200。我創建它:如何在cocos2d中獲得CCLabelTTF的真實大小?

CCLabelTTF * label = [CCLabelTTF labelWithString:@"Hello!" dimensions:CGSizeMake(200,200) alignment:UITextAlignmentLeft lineBreakMode:UILineBreakModeWordWrap fontName:@"Helvetica" fontSize:15]; 

這很好用。

但是我必須把正確的東西放在下面,因此我需要知道文本的高度。我試過label.texture.contentSize,label.contentSize。他們都是200,200。

我能在這裏做什麼? 我使用的是cocos2d 1.x

+0

只要您定義了規格,就很難。爲什麼不嘗試去除尺寸並使用最簡單的labelWithString? –

+0

@ m.ding因爲那麼我不能有linebreak和對齊 –

+0

或只是在你的字符串中添加一個\ n? –

回答

6

您可以使用NSString的sizeWithFont方法。

NSString *hello = @"Hello!" 
UIFont *font = ... 
CGSize *textSize = [hello sizeWithFont:font constrainedToSize:CGSizeMake(200, 200) lineBreakMode:UILineBreakModeWordWrap]; 

這應該告訴你的文本的確切大小。

+1

這絕對是一種方式。希望在cocos2d中有一種方法。我猜對齊包含在UIFont對象(左,右,中)?謝謝,如果沒有其他答案進來,那麼我認爲是正確的。 –

1
UIFont * font = [UIFont fontWithName:@"HelveticaNeue" size:15]; 
CGSize realSize = [message sizeWithFont:font constrainedToSize:CGSizeMake(210, 200) lineBreakMode:UILineBreakModeWordWrap];  
label = [CCLabelTTF labelWithString:message dimensions:realSize alignment:UITextAlignmentCenter lineBreakMode:UILineBreakModeWordWrap fontName:@"HelveticaNeue" fontSize:15]; 

這就是我最終做的基於@Ben的答案。它完美的工作!

相關問題