首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString sizeWithFont:用于多行?

NSString sizeWithFont:用于多行?
EN

Stack Overflow用户
提问于 2011-02-06 03:29:33
回答 3查看 13.2K关注 0票数 14

有没有一个与NSString的sizeWithFont:方法等效的方法,可以用来计算给定宽度的UITectView中的文本高度?据我所知,NSString中的所有方法都只在一行上运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-06 03:44:20

在这些NSString方法的Apple's reference中,您可以使用-sizeWithFont:constrainedToSize:-sizeWithFont:constrainedToSize:lineBreakMode:来“计算多行文本的度量”。

代码语言:javascript
复制
CGSize size = [theString sizeWithFont:font
                    constrainedToSize:CGSizeMake(width, 100000)];
return size.height;
票数 33
EN

Stack Overflow用户

发布于 2011-02-06 03:52:33

对于UITextView,您所要做的就是在视图上调用-sizeToFit,它将自动调整其高度,直到它可以容纳所有可用的文本。您所需要做的就是设置文本视图的宽度,设置文本,然后调用-sizeToFit。文本视图将调整其高度,使其恰好适合所有文本。

更新:

显然,文本视图只有在高度过高时才会缩小,但如果高度不足以显示所有文本,则不会增长。此外,调用-sizeToFit后,文本视图的y坐标将重置回0.0f。下面是你要做的:

代码语言:javascript
复制
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坐标,因此我们继续设置框架以配置xy坐标-在本例中,xy-的坐标均为10.0f,保留宽度不变,并将高度设置为-sizeToFit计算的值。

票数 4
EN

Stack Overflow用户

发布于 2011-10-09 22:19:31

实际上,您可以使用属性contentSize。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4909139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档