UILabel lineBreakMode设置为.ByTruncatingTail导致RTL阿拉伯文本无法正确显示

问题描述 投票:1回答:1

我有一个UILabel,里面有RTL阿拉伯文字。只要不更改lineBreakMode,一切都会正确显示。为了避免在我试图在左边缘显示渐变蒙版时避免显示椭圆字符,我需要裁剪而不是byTruncatingTail

我曾尝试更改contentModealignment等,但没有帮助。标签的右侧似乎是从中间某处开始的文本,而不是从头开始(即,文本中最右边的字符)。

这是我在lineBreakMode = .byClipping中看到的内容

enter image description here

这就是删除lineBreakMode时看到的内容>

enter image description here

这里是代码

let arabicLabel = UILabel(frame: .zero)
arabicLabel.semanticContentAttribute = .forceRightToLeft
arabicLabel.numberOfLines = 1
//arabicLabel.lineBreakMode = .byClipping
arabicLabel.text = "عِنْدَمَا1 عِنْدَمَا2 عِنْدَمَا3 عِنْدَمَا4 عِنْدَمَا5 عِنْدَمَا6 قَدِمْتُ عَلَى (صَاحِبِي) عِنْدَمَا7 عِنْدَمَا8 عِنْدَمَا9 عِنْدَمَا10 عِنْدَمَا عِنْدَمَا قَدِمْتُ عَلَى (صَاحِبِي)"
arabicLabel.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(arabicLabel)

我有一个带有RTL阿拉伯文本的UILabel。只要我不更改lineBreakMode,一切都会正确显示。我需要剪切而不是byTruncatingTail,以避免显示...

swift xcode uilabel arabic
1个回答
0
投票

在浪费足够的时间后,我通过覆盖drawText并添加任意数量的填充有效地隐藏了椭圆字符并为RTL和LTR对其进行了处理,从而以ugly

© www.soinside.com 2019 - 2024. All rights reserved.