我有一个UILabel的文字发生了变化。它有一个背景颜色,我想要始终是相同的宽度,但如果需要适合文本,它的高度要改变。有人知道我怎么做吗?
以下是我尝试的内容:
label.numberOfLines = 0
label.center = self.view.center
label.textAlignment = .center
label.widthAnchor.constraint(equalToConstant: 50.0).isActive = true
label.sizeToFit()
答案 0 :(得分:1)
您应该对autolayout进行一些阅读,并了解如何使用它来构建您的观点,但是,从我可以收集的内容看起来您希望标签:
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.backgroundColor = UIColor.greenColor()
label.numberOfLines = 0
label.textAlignment = .Center
label.text = "This is\nsome multiline\nlabel\nwith a background\n colour"
self.view.addSubview(label)
let width = NSLayoutConstraint(item: label, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 50)
let centerX = NSLayoutConstraint(item: label, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0)
let centerY = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1, constant: 0)
self.view.addConstraints([width, centerX, centerY])
以上代码使用自动布局生成绿色标签,有screenshot here。
使用numberOfLines = 0
可确保视图知道标签可以展开以适合其内容。
如果你阅读它们,布局约束应该是自我解释的,我们将标签的宽度设置为50
然后我们将中心X和Y的约束设置为等于我们添加标签的视图。
这就是你追求的吗? - 如果没有,您可以更新您的问题,以包含您正在尝试制作的模型图像。
答案 1 :(得分:-1)
考虑到您正在使用自动布局并希望将标签锚定到其上方的视图,您可以设置顶部,左和正确然后,该标签的约束将UILabel
的{{1}}设置为0。