有没有一个与NSString的sizeWithFont:方法等效的方法,可以用来计算给定宽度的UITectView中的文本高度?据我所知,NSString中的所有方法都只在一行上运行。
发布于 2011-02-06 03:44:20
在这些NSString方法的Apple's reference中,您可以使用-sizeWithFont:constrainedToSize:或-sizeWithFont:constrainedToSize:lineBreakMode:来“计算多行文本的度量”。
CGSize size = [theString sizeWithFont:font
constrainedToSize:CGSizeMake(width, 100000)];
return size.height;发布于 2011-02-06 03:52:33
对于UITextView,您所要做的就是在视图上调用-sizeToFit,它将自动调整其高度,直到它可以容纳所有可用的文本。您所需要做的就是设置文本视图的宽度,设置文本,然后调用-sizeToFit。文本视图将调整其高度,使其恰好适合所有文本。
更新:
显然,文本视图只有在高度过高时才会缩小,但如果高度不足以显示所有文本,则不会增长。此外,调用-sizeToFit后,文本视图的y坐标将重置回0.0f。下面是你要做的:
CGFloat textViewWidth = 300.0f;
CGFloat textViewPadding = 10.0f;
UITextView * textView = [[[UITextView alloc] init] autorelease];
textView.text = ...; // Really long string
textView.frame = CGRectMake(0.0f, 0.0f, textViewWidth, CGFLOAT_MAX);
[textView sizeToFit]; // Shrinks the height to fit all the text
textView.frame = CGRectMake(textViewPadding, textViewPadding,
textViewWidth, textView.frame.size.height);
[self.view addSubview:textView];首先,设置框架,这样就可以根据需要设置宽度。您可以使用CGFLOAT_MAX来表示无限高。接下来,调用-sizeToFit会缩小高度,直到适合所有文本。但是,它也会重置y坐标,因此我们继续设置框架以配置x和y坐标-在本例中,x和y-的坐标均为10.0f,保留宽度不变,并将高度设置为-sizeToFit计算的值。
发布于 2011-10-09 22:19:31
实际上,您可以使用属性contentSize。
https://stackoverflow.com/questions/4909139
复制相似问题