Измените размер UILabel или шрифт, чтобы он подходил для Accented Character

У меня есть UILabel с текстом внутри, который называется:

self.textLabel; 

Теперь я заметил, что всякий раз, когда я добавляю акцентированное письмо, такое как Ä Ö, я получаю такой эффект:

Обратите внимание, как верхние точки на акцентированных буквах обрезаются. Я хочу, чтобы текст соответствовал метке, однако self.textLabel.numberOfLines = 2 ограничение, которое гарантирует, что у меня есть 2 строки и текст после предложения выходит за пределы ширины сохраняется. По сути, я хочу ярлык вроде:

С точками поддерживается. Теперь я попробовал:

[self.frame sizeToFit] который не работает, потому что он охватывает весь текст. Как я уже сказал, вырезать текст после 2 строк.

С помощью .bounds а также CGRectMake создать новые кадры, а затем назначить их новую высоту текущему кадру, что тоже не работает. Проверьте https://stackru.com/questions/21948714/adjust-size-of-uilabel-to-fit-height-of-text для получения дополнительной информации. Может кто-нибудь помочь мне с этим?

2 ответа

Решение

Ответ должен был сделать

self.textLabel.numberOfLines = 2;

И затем делать:

[self.textLabel sizeToFit];

Добавление верхнего заполнения к метке устранило проблему для меня.

      @IBDesignable class PaddingLabel: UILabel {

@IBInspectable var topInset: CGFloat = 5.0
@IBInspectable var bottomInset: CGFloat = 0
@IBInspectable var leftInset: CGFloat = 0
@IBInspectable var rightInset: CGFloat = 0

override func drawText(in rect: CGRect) {
    let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
    super.drawText(in: rect.inset(by: insets))
}

override var intrinsicContentSize: CGSize {
    let size = super.intrinsicContentSize
    return CGSize(width: size.width + leftInset + rightInset,
                  height: size.height + topInset + bottomInset)
}   

override var bounds: CGRect {
    didSet {
        // ensures this works within stack views if multi-line
        preferredMaxLayoutWidth = bounds.width - (leftInset + rightInset)
    }
} 
}
Другие вопросы по тегам