多行UILabel,具有从右到左的文本和自动调整的字体大小

时间:2018-12-23 10:21:41

标签: ios swift uilabel right-to-left

下面是Swift中的代码,我使用了两行UILabel,并将adjustsFontSizeToFitWidth设置为true,可以正确处理从左到右的文本。我已经使用EasyPeasy库来设置布局约束。

let contactLabel = UILabel()
contactLabel.text = "Tell us how we can contact you".localized()
contactView.addSubview(contactLabel)
contactLabel.easy.layout([Leading(), Trailing(), Top(20), Height(60)])
contactLabel.numberOfLines = 2
contactLabel.lineBreakMode = .byTruncatingHead
contactLabel.adjustsFontSizeToFitWidth = true

当我将语言更改为阿拉伯语时,文本将正确地分成两行,但以LTR模式而不是RTL显示。应该如何管理多行标签以显示阿拉伯文字?

我也在iOS 11上检查了此行为,并且该行为正在起作用,也许在iOS 12中有一个窍门。

2 个答案:

答案 0 :(得分:2)

enter image description here不要设置特定的高度,因为它不会扩展到您的文字数量。

步骤1-设置顶部,顶部,尾部和高度限制,并将高度关系更改为大于或等于

第2步-label.numberOfLines = 0

第3步-label.sizeToFit()

第4步-label.lineBreakMode = .byTruncatingTail

答案 1 :(得分:1)

尽管在大多数情况下,将标签对齐方式设置为“自然”即可,但iOS有时会出错。如果您没有主意,可以随时根据应用程序当前的布局方向在代码中手动进行设置。

    if UIApplication.shared.userInterfaceLayoutDirection == .leftToRight {
        resultLabel.textAlignment = .left
    } else {
        resultLabel.textAlignment = .right
    }