ios - NSLayoutManager boundingRect(forGlyphRange:in :)为RTL语言返回错误的值

标签 ios iphone swift localization hebrew

在我的应用程序中,我在UITextView中的文本行下绘制自定义背景。为此,我使用boundingRect(forGlyphRange:in:)NSLayoutManager方法。它适用于LTR语言(拉丁语、西里尔语、汉语等):
enter image description here
但是,如果我将它用于RTL文本(希伯来语、波斯语等),则该方法返回错误的边界rect(请参见左边缘的填充):
enter image description here
这些额外的填充似乎有一些逻辑。第一个字符决定行的填充大小:
enter image description here
这个额外填充的原因是什么以及如何得到正确的边界矩形?
这里有一个演示:https://www.dropbox.com/s/bpsr7bhhd7gqm2z/hebrew.zip?dl=0
UPD:似乎这个函数对所有使用的字母表都给出了一个错误的结果,我不知道是怎么调用的,变异字符。天成文书例如:
enter image description here

最佳答案

似乎boundingRect(forGlyphRange:in:)精确地计算字形及其用于附加相邻字符的空格,但不计算提供额外填充的最终组成文本。
enter image description here
我解决了我的问题,但是使用了boundingRect函数。检查结果:https://www.dropbox.com/s/qq5lmo8fsozjqml/hebrew%202.zip?dl=0

关于ios - NSLayoutManager boundingRect(forGlyphRange:in :)为RTL语言返回错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54161101/

相关文章:

ios - 使用PaypalSDK iOS iOS导航颜色在iOS中未更改

ios - 可以流式传输超过 115kbps 的视频吗?

iphone - 消息发送到解除分配的实例......据我所知,没有理由应该解除分配

ios - 检查是否正在播放然后更改按钮上的图标

ios - 当我将范围切换到月份时,FSCalendar 内容被压缩

ios - 在 Swift 中使用不同数据类型的数组

html - Bootstrap - 防止 Navbar 在 iPhone 上垂直堆叠

javascript - 从 iPhone 原生应用访问 Google API

Iphone 自动适应页面

ios - Cocoapod 安装后找不到代码签名