Objective c UITextView与UILabel+;卷轴视图

Objective c UITextView与UILabel+;卷轴视图,objective-c,uilabel,uitextview,core-text,Objective C,Uilabel,Uitextview,Core Text,我正在开发一个应用程序,它需要一个视图控制器来显示大量的希伯来文(非英语)文本 文本是富格文本文件中的AttributedString 有4件事我需要视图来完成 平滑滚动 获取单词的范围,以便我可以自动滚动到它(如scrollRangeToVisible) 流畅地更改字体(我想使用UISlider更改字体) 快速加载 从某种意义上说,我在寻找一个电子阅读器的功能,只是我只需要一列,我希望它滚动而不是页面 我尝试过的事情,有优点也有缺点 归类为UITextView的常规UITextView和滚动视

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

文本是富格文本文件中的AttributedString

有4件事我需要视图来完成

  • 平滑滚动

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

  • 流畅地更改字体(我想使用UISlider更改字体)

  • 快速加载

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

    我尝试过的事情,有优点也有缺点

    归类为UITextView的常规UITextView和滚动视图

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

    • 轻松搜索和自动滚动
    • 快速加载
    • 平滑字体更改
    反对:

    • 非常起伏的滚动
    ui滚动视图中的标签

    优点:

    • 搜索和自动滚动并不容易,但易于管理
    • 非常平滑的滚动
    反对:

    • 非常不稳定的字体切换
    • 慢加载
    我唯一没有尝试过的(我能想到的)是CoreText

    coreText是一条路吗?我宁愿使用UITextView,如果有一种方法可以让它更好地呈现大量希伯来文(非英语)文本

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

    编辑1

    -(double)Height{
        [layoutManager glyphRangeForTextContainer:textContainer];
        NSLog(@"HEIGHT = %f",[layoutManager
                              usedRectForTextContainer:textContainer].size.height);
        return [layoutManager
                usedRectForTextContainer:textContainer].size.height;
    }
    
    我会的
  • 使用希伯来文文本创建NSTextStorage(NSAttributedString)对象
  • 创建NSLayoutManager对象,NSTextContainer。把它们挂起来
  • 将它们添加到自定义UIView中,该视图的大小可以从NSLayoutManager中查询,如图所示

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

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


    这不是一件容易的事,但却是一个非常好的项目:)

    您是否确认是希伯来文引起了问题?试着用一个类似大小的英文富文本文档?老实说,我从来没有想过,但我确认它是希伯来文。我试过了,它滚动的很完美。你只会显示希伯来文吗?没有选择/编辑等?是的,我不需要选择或编辑功能,但正如我在问题末尾所说的,我已经尝试过关闭/禁用它们。我将尝试这两个问题。1) 你发送的链接是针对Mac的,它们也适用于iPhone/IOS?2) 我将如何使用此搜索和自动滚动?scrollRangeToVisible在这里也起作用吗?谢谢,所以我假设我将此UIView附加到Scrollview?@user2738258是的,它适用于iOS。它们几乎是一样的。实现scrollRangeToVisible本身就是一项很好的任务。我会使用其中一种方法。是,视图进入滚动视图。@user2738258是。我在回答中提供了更多的链接。如果您完成此解决方案,您应该将其添加到cocoapods中。谢谢。我会试试看会发生什么