在视图中,我将有两个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
我面临的问题是,日期在最右边对齐,并且用户名占用了整个宽度。我希望它与众不同-用户名的标签与所需的宽度一样,日期占用剩余的整个空间。
换句话说:我希望绿色标签缩短以仅适合文本,红色标签占据剩余的整个宽度,因此它们都彼此相邻,但是当用户名过长时,它将截断并仍显示整个日期标签。我该怎么办?
答案 0 :(得分:0)
您需要设置
contentHuggingPriority
将usernameLabel
设置为高于另一个{,同时设置
contentCompressionResistance
到commentDateLabel
更高