UILabelのWrapされた文字列の高さの取得
引き続きiPhone開発メモ。UILabelには文字列を上寄せとか下寄せにする仕組みがないようです。つまり文字列は高さに対して常に中央に表示されてしまいます。なので改行モードをUILineBreakModeWordWrapに設定していて、かつ文字を上寄せにしたかったりする場合は、UILabel自体の高さを調節しなければなりません。
そうなるとWrapされた文字列の高さを取得する必要が出てくるわけですが、それはNSStringの sizeWithFont: constrainedToSize: lineBreakMode: メソッドを使えば可能です。
NSString *str = @"sample string";
CGSize size = [str
sizeWithFont:[UIFont boldSystemFontOfSize:13]
constrainedToSize:CGSizeMake(500, 2000)
lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"String height: %d", size.height);
constrainedToSize: には文字列の表示領域の幅と十分な高さを適当に指定します。戻り値はCGSizeで得られるので、heightプロパティにアクセスすれば、文字列の高さを取得することができます。