UILabel 只有在定向后才会增长
Posted
技术标签:
【中文标题】UILabel 只有在定向后才会增长【英文标题】:UILabel is growing only after orientation 【发布时间】:2019-07-26 12:59:03 【问题描述】:我有行数为 0 的 uilabel,并将 4 条边的编程约束设置为超级视图。当我运行时,我看到标签没有显示多行,但是在我第一次定位设备后,它开始显示多行,有什么帮助吗?
private let headerLabel: UILabel =
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.numberOfLines = 0
return label
()
let leading = headerLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor)
let top = headerLabel.topAnchor.constraint(equalTo: contentView.topAnchor)
let trailing = headerLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor)
let bottom = headerLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)
NSLayoutConstraint.activate([leading, top, trailing, bottom])
【问题讨论】:
听起来很奇怪。您有任何设置标签的代码吗? 添加到问题中 您的约束未激活...您必须致电leading.activate = true
不,我也添加了约束 NSLayoutConstraint.activate([leading, top, trailing, bottom])
另外,你在headerLabel
上设置了约束,而你的标签名称是lbl
,当你显示部分代码时真的很混乱。另外,您的 superView 可能存在问题..它不够大。可能要打开 viewHiarchy 并检查高度?
【参考方案1】:
将标签水平和垂直固定在超级视图的中间。
添加前导尾随上下约束以大于等于 10
将行数设置为 0
当文本足够大时,您甚至可以让标签滚动。
【讨论】:
这不是解决方案【参考方案2】:我只是多给 50 个 topAnchor。因此,您可以在状态栏下方看到标签。
private let lbl: UILabel =
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.numberOfLines = 0
return label
()
override func viewDidLoad()
super.viewDidLoad()
lbl.text = "The quick brown fox jumps over the lazy dog. "
view.addSubview(lbl)
let leading = lbl.leadingAnchor.constraint(equalTo: view.leadingAnchor)
let top = lbl.topAnchor.constraint(equalTo: view.topAnchor, constant: 50)
let trailing = lbl.trailingAnchor.constraint(equalTo: view.trailingAnchor)
let bottom = lbl.trailingAnchor.constraint(equalTo: view.trailingAnchor)
let constraintArray = [leading,top,trailing,bottom]
for item in constraintArray
item.isActive = true
【讨论】:
以上是关于UILabel 只有在定向后才会增长的主要内容,如果未能解决你的问题,请参考以下文章