【问题标题】:Best way to add a large chunk of text to a UIScrollView?向 UIScrollView 添加大量文本的最佳方法?
【发布时间】:2010-03-21 09:16:42
【问题描述】:

在 UIScrollView 中显示大量文本(取自应用程序中的 .txt 文件)以便用户滚动浏览的最佳方式是什么?文本的长度是可变的。

【问题讨论】:

    标签: iphone objective-c xcode uiscrollview


    【解决方案1】:

    在 Interface Builder 上打开 Attributes Inspector(如果尚未打开 - command-1)并取消选中“Editable”。

    还要注意下面有一个滚动视图部分。确保选中“滚动”。

    希望这对某人有所帮助(该帖子已有一年之久,所以我猜现在发布该帖子的人不需要此信息)。

    【讨论】:

    • 它做到了:),需要确认这是一个好方法。
    【解决方案2】:

    我来这里寻找答案,发现所有答案都是错误的——或者完全错误。

    正确的方法是单独使用 UITextView。由于它是 UIScrollView 的后代,因此它具有内置的滚动功能和许多用于调整格式的功能,例如 insets 等。

    如果您打算只显示文本,则需要明确禁用编辑。您可以通过将“可编辑”属性设置为 false 来执行此操作。 如果要禁用文本选择机制,请将“selectable”属性设置为 false。

    在较新版本的 iOS 中,UITextView 增加了对NSTextContainer 的支持,让您可以更好地控制格式。

    【讨论】:

      【解决方案3】:

      我为我工作的一种方法是创建 UILabel,设置文本,然后按其大小设置滚动视图的内容大小。 Here is an example

      引用:

      // alocate and initialize scroll
       UIScrollView *myScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 460.0f)];
       // alocate and initialize label
       UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 460.0f)];   
      
      // add long text to label
       myLabel.text = @"Lorem ipsum... long text here";
       // set line break mode to word wrap
       myLabel.lineBreakMode = UILineBreakModeWordWrap;
       // set number of lines to zero
       myLabel.numberOfLines = 0;
       // resize label
       [myLabel sizeToFit];
      
      // set scroll view size
       myScroll.contentSize = CGSizeMake(myScroll.contentSize.width, myLabel.frame.size.height);
       // add myLabel
       [myScroll addSubview:myLabel];
       // add scroll view to main view
       [self.view addSubview:myScroll];
      

      【讨论】:

        【解决方案4】:

        将 UITextView 的使用转化为 UIScrollView。我不推荐这个,因为 UITextView 是 UIScrollView 的子类。 Apple 也推荐同样的方法。

        在这种情况下使用 UILabel 作为子视图,

        【讨论】:

        • 为什么这个被否决了这么多?确实,Apple 建议不要将UITextView 放入UIScrollView,因为它确实是UIScrollView 的子类。 (查看文档!)因此,滚动和 UI 交互可能会变得混乱。不过,我同意UILabel 可能不是最好的选择,因为UITextView 已经内置了滚动功能。
        【解决方案5】:

        将 UITextView 放入 UIScrollView。

        【讨论】:

        • 是的,但是长度呢?
        • 不管你的文本有多长,UIScrollView 仍然会滚动你的文本。
        • -1:坏主意。 UITextViewUIScrollView 的子类。它已经内置了滚动行为!
        猜你喜欢
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-11
        • 1970-01-01
        • 2012-03-02
        相关资源
        最近更新 更多