Быстрое изменение межстрочного интервала оставляет нижний пробел - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь изменить межстрочный интервал для метки, чтобы уменьшить пробел в арабском языке, это слишком много.Функция расширения, которую я использовал с здесь с дополнениями для арабского стиля, работает над контролем межстрочного интервала надписи, но единственная проблема, которую он оставляет - это пустое пространство нижнего поля, которое, как я полагаю, равняется тому же размеру надписи, прежде чем уменьшать пространство строки..

Функция расширения здесь:

extension UILabel {
// Pass value for any one of both parameters and see result
func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) {

    guard let labelText = self.text else { return }

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = lineSpacing
    paragraphStyle.lineHeightMultiple = lineHeightMultiple

    paragraphStyle.alignment = .justified
    paragraphStyle.baseWritingDirection = .rightToLeft

    let attributedString:NSMutableAttributedString

    if let labelattributedText = self.attributedText {
        attributedString = NSMutableAttributedString(attributedString: labelattributedText)
    } else {
        attributedString = NSMutableAttributedString(string: labelText)
    }

    attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))

    self.attributedText = attributedString
}

}

, тогда я просто вызываю функцию следующим образом:

bodyLabel.attributedText = entry.attributedText
bodyLabel.setLineSpacing(lineSpacing: -20)

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Ограничения bodyLabel должны быть такими,

enter image description here

Настройте bottom constraint вашего label на >=0

0 голосов
/ 18 июня 2019

Я попробовал расширение, оно работает нормально, как это:

bodyLabel.attributedText = entry.attributedText
bodyLabel.setLineSpacing(lineSpacing: -20)
bodyLabel.sizeToFit()

Также, если это не сработало, проверьте высоту метки и попробуйте установить для содержимого значение Fill.

bodyLabel.contentMode = .scaleAspectFill
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...