2012-12-07 83 views
1

我想爲NSString獲得CGSize,但我遇到了問題。這裏是我使用的代碼:爲NSString獲取CGSize?

CGFloat actualMessageFontSize; 
CGSize messageSize = 
[message sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" 
             size:14.0f] 
      minFontSize:14.0f 
     actualFontSize:&actualMessageFontSize 
       forWidth:(alertViewWidth - textIndent) 
     lineBreakMode:NSLineBreakByWordWrapping]; 

NSLogCGSize這個代碼後,高度不改變,就算我把一個巨大的NSString進去。你知道爲什麼會發生這種情況,或者我應該試試嗎?

謝謝。

+0

[@ 「MYTEXT」 sizeWithFont:[UIFont fontWithName:@ 「黑體」 大小:12] constrainedToSize:CGSizeMake(300,CGFLOAT_MAX)lineBreakMode:NSLineBreakByWordWrapping]; – Sandeep

+0

「不改變」是什麼意思? – sunkehappy

+0

抱歉應該更清楚了。我的意思是它在18像素高,但從來沒有變大,只有一條線。 –

回答

2

使用此方法,並

-(float) calculateHeightOfTextFromWidth:(NSString*) text: (UIFont*)withFont: (float)width :(UILineBreakMode)lineBreakMode 
{ 
    [text retain]; 
    [withFont retain]; 
    CGSize suggestedSize = [text sizeWithFont:withFont constrainedToSize:CGSizeMake(width, FLT_MAX) lineBreakMode:lineBreakMode]; 

    [text release]; 
    [withFont release]; 

    return suggestedSize.height; 
} 

,並使用它像波紋管......我用這個UILable看到代碼..

UILabel *lblAddress = [[UILabel alloc]init]; 
    [lblAddress setFrame:CGRectMake(110, 31, 200, 31)];   
    lblAddress.text = @"ABDKFNKG KKGK jfnjgdf gdklfg fldgmfkgml f"; 
    lblAddress.lineBreakMode = UILineBreakModeWordWrap; 
    lblAddress.numberOfLines = 0;///write this line for multiple line and set 0 or anything lese 
    lblAddress.font = [UIFont fontWithName:@"Helvetica" size:12]; 

    lblAddress.frame = CGRectMake(lblAddress.frame.origin.x, lblAddress.frame.origin.y, 
          200,[self calculateHeightOfTextFromWidth:lblAddress.text :lblAddress.font :200 :UILineBreakModeWordWrap]); 

    lblAddress.textColor = [UIColor darkGrayColor]; 

    [self.view addSubview:lblAddress]; 
+0

@JoshKahane使用此代碼CGSize suggestedSize = [message sizeWithFont:[UIFont fontWithName:@「Helvetica-Bold」size:14.0f] constrainedToSize:CGSizeMake(alertViewWidth - textIndent,FLT_MAX)lineBreakMode:lineBreakMode]; –

0

你的UILabel變化框架或UITextView其中他們可能會使用相應的改變。

CGFloat actualMessageFontSize = 12.0; 
CGSize messageSize = [message sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:14.0f] minFontSize 
//set frame accordingly 
yourLabel.frame = CGReactMake(yourLabel.frame.origin.x,yourLabel.frame.origin.y,messageSize.width,messageSize.wiheight,);