ios:显示可变长度,多行文本的最佳方式

时间:2011-04-21 17:24:31

标签: iphone cocoa-touch ios ipad text

我打算从文本文件加载多段内容并在UI上显示。我将从几个文本文件中的一个加载,并且不会提前知道文本将持续多长时间。我的第一个想法是在UIScrollView中使用UILabel。但是,似乎UILabel不能根据它包含的行数进行扩展。这是对的吗?

如果UILabel不适合这项工作,我该怎么用? UIWebView的? UIWebView会很好地为我处理滚动吗?

2 个答案:

答案 0 :(得分:20)

结帐UITextView。您可以在UIView中放置一个,文本视图提供滚动视图的所有功能,以及更多(它是UIScrollView子类)。

答案 1 :(得分:14)

如果您不想使用可滚动的UITextView以便容纳您需要的任何文本,您可以查看一些计算UILabel大小的方法,例如,即时。

这应该让你开始朝着正确的方向前进:NSString有一些UIKit类别方法

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size;
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode;

您可以在NSString上调用这些方法,传入您想要使用的任何字体以及最大大小。通常情况下,我会限制宽度,但要给出一个非常大的高度,这样它可以让我知道最佳高度是多少。这些方法将返回一个CGSize,然后您可以使用它来设置UILabels的帧。例如,如果我知道我可以放置标签的最大宽度为300点宽,我将传递CGSizeMake(300,2000)作为约束尺寸。