Многострочная UILabel с текстом справа налево и автоматически настраиваемым размером шрифта - PullRequest
0 голосов
/ 23 декабря 2018

Ниже приведен код в 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 голосов
/ 23 декабря 2018

Хотя установка выравнивания метки на «естественный» работает в большинстве случаев, iOS иногда ошибается.Если у вас нет идей, вы всегда можете установить его вручную в коде, основываясь на текущем направлении макета приложения.

    if UIApplication.shared.userInterfaceLayoutDirection == .leftToRight {
        resultLabel.textAlignment = .left
    } else {
        resultLabel.textAlignment = .right
    }
0 голосов
/ 23 декабря 2018

enter image description here Не устанавливайте конкретную высоту, поскольку она не расширяется до вашего объема текста.

Шаги 1 - Установите вверху, впереди, сзади и сзади.ограничение по высоте и изменение отношения по высоте к Больше или равно

Шаг 2 - label.numberOfLines = 0

Шаг 3 - label.sizeToFit()

шаг 4 - label.lineBreakMode = .byTruncatingTail

...