UITextView中VS的UILabel +滚动型(UITextView vs UILabel+S

2019-10-23 06:48发布

IM上的,需要一个视图控制器在它显示希伯来语(非英语)的文本的一个很好的量的应用程序工作。

文字是从富文本文件构造一个AttributedString

有4个东西,我需要的视图做。

  1. 平滑滚动

  2. 找一个字的范围,所以我可以自动滚动到它(如scrollRangeToVisible

  3. 顺利更改字体(我想用一个UISlider更改字体)

  4. 快速加载

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

事情我已经尝试过,有利弊

普通的UITextView和滚动型归类的UITextView

优点:

  • 简单的搜索和自动滚屏
  • 快速负载
  • 平滑字体改变

WITH:

  • 非常波涛汹涌的滚动

在的UILabel滚动型

优点:

  • 搜索和自动滚动是不容易的,但管理
  • 非常平滑滚动

WITH:

  • 非常波涛汹涌的字体切换
  • 加载速度慢

我还没有试过(即我能想到的)的唯一事情是CoreText

是coreText要走的路? 我宁愿使用一个UITextView,如果有一种方式来获得它呈现许多希伯来语的(非英语)的文本更好。

注:我已经尝试过的UITextView的和可选择禁用编辑。

编辑1

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

Answer 1:

我会

  • 创建一个希伯来文的NSTextStorage(一个NSAttributedString)对象。
  • 创建NSLayoutManager对象,NSTextContainer。 挂钩起来。
  • 使他们在与大小,你可以从NSLayoutManager查询像一个自定义的UIView 此 。

    实施scrollRangeToVisible会本身就是一个很好的任务。 我会用一个这些方法。

    如果你只有字符范围,需要计算的字形范围,之一这些方法可以帮助。

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



  • 文章来源: UITextView vs UILabel+ScrollView