【问题标题】:UITextView vs UILabel+ScrollViewUITextView 与 UILabel+ScrollView
【发布时间】:2015-06-04 18:52:36
【问题描述】:

我正在开发一个需要视图控制器才能在其中显示大量希伯来语(非英语)文本的应用程序。

文本是来自富文本文件的 AttributedString

我需要视图执行 4 件事。

  1. 平滑滚动

  2. 获取单词的范围,以便我可以自动滚动到它(如scrollRangeToVisible

  3. 换字体流畅(我想用UISlider换字体)

  4. 快速加载

在某种意义上,我正在寻找电子阅读器的功能,我只需要一列,我希望它滚动而不是页面。

我已经尝试过的事情和利弊

Regular UITextView & Scrollview Classed as UITextView

优点:

  • 轻松搜索和自动滚动
  • 快速加载
  • 字体切换流畅

缺点:

  • 非常不稳定的滚动

滚动视图中的 UILabel

优点:

  • 搜索和自动滚动并不容易,但易于管理
  • 滚动非常流畅

缺点:

  • 非常不稳定的字体切换
  • 加载缓慢

我唯一没有尝试过(我能想到的)是CoreText

coreText 是要走的路吗?如果有办法让它更好地呈现大量希伯来语(非英语)文本,我宁愿使用 UITextView。

注意:我已经尝试在 UITextView 和 Selectable 上禁用编辑。

编辑 1

-(double)Height{
    [layoutManager glyphRangeForTextContainer:textContainer];
    NSLog(@"HEIGHT = %f",[layoutManager
                          usedRectForTextContainer:textContainer].size.height);
    return [layoutManager
            usedRectForTextContainer:textContainer].size.height;
}

【问题讨论】:

  • 您是否确认是导致问题的希伯来文文本?尝试使用类似大小的英文富文本文档?
  • 老实说,我什至从来没有想过它,但是是的,我确认了它的希伯来文文本。我尝试了Objective-C wikipedia Page,它滚动完美。
  • 您是否只显示希伯来文文本?没有选择/编辑等?
  • 是的,我不需要选择或编辑功能,但正如我在问题结尾处所述,我已经尝试关闭/禁用它们。

标签: objective-c uilabel uitextview core-text


【解决方案1】:

我愿意

  • 使用希伯来文文本创建一个 NSTextStorage(an NSAttributedString) 对象。
  • 创建 NSLayoutManager 对象,NSTextContainer。把它们挂起来。
  • Render 将它们放到自定义 UIView 上,您可以从 NSLayoutManager 查询大小,例如 this

    实现 scrollRangeToVisible 本身就是一项很好的任务。我会使用these 方法之一。

    如果您只有字符范围并且需要计算字形范围,these 方法之一可能会有所帮助。

    这不会很容易,但是一个非常好的项目:)

  • 【讨论】:

    • 我会试试这两个问题。 1)您发送的链接是针对 Mac 的,它们也适用于 iPhone/IOS 吗? 2)我将如何搜索和自动滚动? scrollRangeToVisible 也可以在这里工作吗?谢谢
    • 我还假设我将此 UIView 附加到 Scrollview?
    • @user2738258 是的,它适用于 iOS。它们几乎相同。实现 scrollRangeToVisible 本身就是一项很好的任务。我会使用these 方法之一。是的,视图进入滚动视图。
    • @user2738258 是的。我在答案中提供了更多链接。如果你完成了这个解决方案,你应该把它添加到 cocoapods 中。
    • 谢谢。我会尝试看看会发生什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多