向宽度可变的两个标签添加右约束

时间:2018-10-26 10:33:16

标签: swift uilabel nslayoutconstraint

在视图中,我将有两个UILabel彼此相邻,其中将显示对帖子的评论,一个用于用户名,另一个用于时间戳。我将时间戳转换为简单的格式,例如一个小时前的“ 1h”,22分钟前的“ 22m”等。

这是我的两个标签:

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 :(得分:0)

您需要设置

  

contentHuggingPriority

usernameLabel设置为高于另一个{,同时设置

  

contentCompressionResistance

commentDateLabel更高