そして、動的に高さを変更する場合、高さを取得するためのAPIが存在します。
UIStringDrawing.hに定義があります。
//単一行 - (CGSize)sizeWithFont:(UIFont *)font; // Uses UILineBreakModeWordWrap - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode; //複数行 - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size; // Uses UILineBreakModeWordWrap - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode; // UITextAlignment is not needed to determine size
サンプルコード
UITextView* textView = [[[UITextView alloc] init] autorelease];
[textView setText:@"sample"];
// ピクセル
CGSize textSize = [textView.text sizeWithFont:textView.font
constrainedToSize:CGSizeMake(320, 1000)
lineBreakMode:UILineBreakModeCharacterWrap];
NSLog(@"textSize font:%@ w:%f h:%f", textView.font, textSize.width, textSize.height);
// textSize font: font-family: "Helvetica"; font-weight: normal; font-style: normal; font-size: 12px w:39.000000 h:15.000000
ちなみに2行文のテキストを指定すると
[textView setText:@"sample\n2nd line"]; ... //w:43.000000 h:30.000000



