UILabel в UITableViewCell занимает дополнительное место, когда установлено фиксированное количество строк - PullRequest
1 голос
/ 25 марта 2019

У меня есть метка внутри ячейки табличного представления.Я установил метку на количество строк, 2. Однако, если текст больше, он занимает пространство, как будто у него нет ограничения строк и отображает полный текст.Даже если он отображает только две строки.

Ниже приведены ограничения для этой метки дисплея.Все остальные элементы расположены сверху вниз на 5 точек от верхней части контейнера до нижней части.Если текст не более 2 строк, лишнего пробела нет.Кто-нибудь испытывал это или нашел исправление для него?

enter image description here enter image description here enter image description here

Ответы [ 6 ]

1 голос
/ 05 апреля 2019

Предполагая, что остальные три метки имеют numberOfLines 1.

Итак, вот рабочий раствор

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib..

    self.tableView.delegate = self
    self.tableView.dataSource = self
    self.tableView.estimatedRowHeight = 112
    self.tableView.rowHeight = UITableView.automaticDimension
}

Метка даты

Ограничения и приоритет размещения контента

Date Label

2-я этикетка

Ограничения и приоритет размещения контента

2nd Label

ярлык вещь

Ограничения и приоритет размещения контента

Label Thing

Последний ярлык (12:00)

Ограничения и приоритет размещения контента

Time label

Результат:

Result in iPhone X

Для получения подробной информации, пожалуйста, перейдите по этой ссылке Демонстрационный проект

Надеюсь, это поможет вам.

1 голос
/ 05 апреля 2019

Если вы не хотите, чтобы ваш ярлык рос выше ожидаемого.

label.setContentCompressionResistancePriority(.required, for: .vertical)

Если вы используете перо / раскадровку. просто измените content hugging priority на 1000

0 голосов
/ 08 апреля 2019

Почему бы вам просто не указать статическую высоту для UILabel, если вы не хотите, чтобы она была длиннее двух строк, установите для нее приблизительную высоту 40-50

0 голосов
/ 03 апреля 2019

В моем случае, я использую эту функцию, если экран меньше, он автоматически уменьшит его до минимального установленного вами размера.надеюсь это поможет.

Минимальный размер шрифта

0 голосов
/ 02 апреля 2019

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

Убедитесь, что табличное представление адаптируется.

override func viewWillAppear(_ animated: Bool) {
    tableView.rowHeight = UITableView.automaticDimension
    tableView.estimatedRowHeight = 65.0
} 

Для решения проблемы UILabel

let subTitleLabel: UILabel = {
    let label = UILabel()
    label.text = "My String"
    label.font = UIFont.systemFont(ofSize: 22).bold()
    label.textColor = UIColor(red: 0.773, green: 0.776, blue: 0.773, alpha: 1.0)
    label.numberOfLines = 0 // <---- change number of lines
    label.fitTextToBounds()
    label.translatesAutoresizingMaskIntoConstraints = false // <--- only if using constrains
    label.textAlignment = .left
    return label
0 голосов
/ 02 апреля 2019
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...