【问题标题】:ios: best way to display variable-length, multi-line textios:显示可变长度、多行文本的最佳方式
【发布时间】:2011-08-10 11:52:58
【问题描述】:

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

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

【问题讨论】:

    标签: iphone cocoa-touch ios ipad text


    【解决方案1】:

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

    【讨论】:

    • 谢谢。乍一看,它看起来好像 UITextView 总是可编辑的。我去看看它是否有只读选项。
    • 是的,确实如此。我相信这是editable 属性。将其设置为NO
    • 如果您不希望用户能够复制/粘贴它,请将 selectable 设置为 NO
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2014-11-15
      • 2018-09-01
      • 2011-10-18
      • 1970-01-01
      • 2012-10-02
      • 2013-03-24
      相关资源
      最近更新 更多