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

mor*_*des 22 iphone cocoa-touch text ipad ios

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

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

Mar*_*off 20

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

  • 是的,确实如此.我相信这是"可编辑的"财产.将其设置为"NO". (5认同)
  • 谢谢.乍一看,看起来UITextView总是可编辑的.我会看看它是否有一个只读选项. (2认同)

Chr*_*ian 14

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

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

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size;
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode;
Run Code Online (Sandbox Code Playgroud)

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