所以,我不知道为什么会这样,但这是一张描绘它的照片。
如果你看看绿色背景的UILabel,它上面和下面都有填充物,但我不知道为什么会这样。
这是我创建它的方式:
var bodyLabel: ActiveLabel = {
let label = ActiveLabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.isUserInteractionEnabled = false
label.backgroundColor = .green
label.numberOfLines = 0
label.textColor = .darkGray
label.font = UIFont.systemFont(ofSize: MessageTableViewCell.defaultFontSize())
label.enabledTypes = [.mention]
label.mentionColor = .gray //Figure this out
return label
}()
它是ActiveLabel的事实并不是发生这种情况的原因。
以下是它所涉及的所有限制因素:
self.contentView.addSubview(self.thumbnailView)
self.contentView.addSubview(self.titleLabel)
self.contentView.addSubview(self.bodyLabel)
self.contentView.addSubview(self.likeView)
let views = ["thumbnailView" : self.thumbnailView,
"titleLabel" : self.titleLabel,
"bodyLabel" : self.bodyLabel,
"likeView" : self.likeView] as [String : Any]
let metrics = ["tumbSize" : Constants.kMessageTableViewCellAvatarHeight,
"padding" : 15,
"right" : 10,
"left" : 5]
self.contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-left-[thumbnailView(tumbSize)]-right-[titleLabel(>=0)]-right-|", options: [], metrics: metrics, views: views))
self.contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-left-[thumbnailView(tumbSize)]-right-[bodyLabel(>=0)]-right-|", options: [], metrics: metrics, views: views))
self.contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-right-[thumbnailView(tumbSize)]-(>=0)-|", options: [], metrics: metrics, views: views))
if self.reuseIdentifier == Constants.MessageCellIdentifier {
self.contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-right-[titleLabel(20)]-left-[bodyLabel(>=0@999)]-left-|", options: [], metrics: metrics, views: views))
} else {
self.contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[titleLabel]|", options: [], metrics: metrics, views: views))
}
我注意到当我删除if语句中的约束时,显然视图会进入尴尬的位置,但我注意到它不再具有绿色填充。我真的不确定导致这种填充的原因。
答案 0 :(得分:1)
好吧,你是通过用left
值包装身体标签来添加填充。
所以代替:
V:|-right-[titleLabel(20)]-left-[bodyLabel(>=0@999)]-left-|
执行以下操作:
V:|-right-[titleLabel(20)][bodyLabel(>=0@999)]|
这将删除顶部和底部填充。我希望有所帮助!
答案 1 :(得分:0)
您需要将边缘设置为UILabel。
请参阅以下链接以获取解决方案: iOS Add left padding to UILabel