Добавьте правое ограничение к двум меткам с переменной шириной - PullRequest
0 голосов
/ 26 октября 2018

У меня есть две UILabel рядом друг с другом в представлении, где я буду показывать комментарии к посту, один для имени пользователя и один для отметки времени. Я конвертирую метку времени в простой формат, такой как «1 ч» для часа назад, «22 м» для 22 минут назад и т. Д.

Это мои две метки:

var usernameLabel: UILabel = {

    let usernameLabel = UILabel()
    usernameLabel.numberOfLines = 1
    usernameLabel.lineBreakMode = .byTruncatingTail
    usernameLabel.font = UIFont.boldSystemFont(ofSize: 15)
    usernameLabel.textColor = UIColor.darkGray
    usernameLabel.translatesAutoresizingMaskIntoConstraints = false
    usernameLabel.text = "Username"
    usernameLabel.isUserInteractionEnabled = true
    usernameLabel.isExclusiveTouch = false
    usernameLabel.backgroundColor = .green

    return usernameLabel

}()

var commentDateLabel: UILabel = {

    let commentDateLabel = UILabel()
    commentDateLabel.font = UIFont.systemFont(ofSize: 12)
    commentDateLabel.textColor = UIColor.lightGray
    commentDateLabel.translatesAutoresizingMaskIntoConstraints = false
    commentDateLabel.backgroundColor = .red

    return commentDateLabel

}()

Я добавляю ограничения к ним обоим, чтобы убедиться, что они вписываются в мое представление, например:

commentDateLabel.leftAnchor.constraint(equalTo: usernameLabel.rightAnchor, constant: 8).isActive = true
commentDateLabel.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -16).isActive = true

usernameLabel.leftAnchor.constraint(equalTo: profilePictureImageView.rightAnchor, constant: 16).isActive = true

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

current situation

Другими словами: я хочу, чтобы зеленая метка укорачивалась до размера текста, а красная метка занимала всю оставшуюся ширину, чтобы они оба были рядом друг с другом, но когда имя пользователя слишком длинное, оно будет обрезать и по-прежнему показывать всю метку даты. Как бы я пошел по этому поводу?

1 Ответ

0 голосов
/ 26 октября 2018

Вам нужно установить

contentHuggingPriority

на usernameLabel, чтобы быть выше, чем другие, также установите

contentCompressionResistance

до commentDateLabel выше

...