Des*_*ner 7 ios autolayout uicollectionviewcell uistackview
我有一个标题标签,定义如下:
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 2
label.setContentCompressionResistancePriority(.init(rawValue: 999), for: .vertical)
return label
}()
private lazy var descriptionLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.lineBreakMode = .byTruncatingTail
return label
}()
Run Code Online (Sandbox Code Playgroud)
titleLabel可以增长并强制收缩descriptionLabel。单元格高度固定为120或78。当单元格高度为78时,高度descriptionLabel为0
两者都添加到UIStackview
private lazy var labelStackView: UIStackView = {
let stackView = UIStackView()
stackView.addArrangedSubview(titleLabel)
stackView.addArrangedSubview(descriptionLabel)
stackView.axis = .vertical
stackView.distribution = .fill
return stackView
}()
Run Code Online (Sandbox Code Playgroud)
stackView 添加containerView到顶部、左侧、右侧和底部的填充内部。固定containerView在 的边缘contentView。
上distribution的stackView被设置fill为允许descriptionLabel收缩。这种设置会导致约束被打破。
问题
titleLabel- UILabel 的高度不明确
descriptionLabel- UILabel 的高度和垂直位置不明确
有没有办法在不打破约束的情况下实现这一目标?
我尝试为两个标签设置内容阻力优先级,如下所示:
titleLabel->label.setContentCompressionResistancePriority(.init(rawValue: 999), for: .vertical)
descriptionLabel->label.setContentCompressionResistancePriority(.init(rawValue: 998), for: .vertical)
我还是没有运气。
Des*_*ner 10
通过在 上设置内容拥抱优先级descriptionLabel,我能够修复布局歧义。
private lazy var descriptionLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.lineBreakMode = .byTruncatingTail
label.setContentHuggingPriority(.high, for: .vertical)
return label
}()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4798 次 |
| 最近记录: |