2011-01-22 11 views
2

私のipadアプリケーションでは、私は全体のビューを占めるlableを持っています。私は、rect全体に収まるラベルのサイズを動的に計算したいと思います。しかし、私はラップという言葉を維持したい。 私のXIBでは、ラベルを付けてモードを単語ラップモードに設定しました。iPad/iPhone - 指定された矩形に収まるラベルサイズを設定します

添付の画像を参照してください。私が欲しいのは、単語を折り返してラベルを表示することです。問題を見つけるのに手伝ってくれる人がいますか?

次は私が使用しているコードです: (これらのフォーラムで回答の一つで、私は次のコードを見つけました:)

-(void)sizeLabel:(UILabel*)label toRect:(CGRect)labelRect withFont:(NSString*)fontName { 

    // Set the frame of the label to the targeted rectangle 
    label.frame = labelRect; 

    // Try all font sizes from largest to smallest font size 
    int fontSize = 300; 
    int minFontSize = 5; 

    // Fit label width wize 
    CGSize constraintSize = CGSizeMake(label.frame.size.width, MAXFLOAT); 

    do { 
    // Set current font size 
    label.font = [UIFont fontWithName:fontName size:fontSize]; 

    // Find label size for current font size 
    CGSize labelSize = [[label text] sizeWithFont:label.font 
     constrainedToSize:constraintSize 
     lineBreakMode:UILineBreakModeWordWrap]; 

    // Done, if created label is within target size 
    if(labelSize.height <= label.frame.size.height) 
    break; 

    // Decrease the font size and try again 
    fontSize -= 2; 

    } while (fontSize > minFontSize); 
} 

alt text

答えて

2

をので、あなたが取得しようとしていますワードラップされるテキストが最大サイズで表示されますか?その場合 は行います

//With the line break mode set to wordwrap and number of lines set to 1. 
[label adjustsFontSizeToFitWidth:YES]; 
//set max font 
label.font = [UIFont fontWithName:fontName 300]; 
[label setMinimumFontSize:5]; 

そして、それはあなたがする必要があるすべてでなければなりません。

+0

最初のコード行は[label setAdjustsFontSizeToFitWidth:YES]である必要があります。 –

関連する問題