【发布时间】:2020-03-11 06:15:39
【问题描述】:
我有一个如下定义的标题标签:
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
}()
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
}()
stackView 被添加到containerView 中,并在顶部、左侧、右侧和底部进行了填充。 containerView 固定在 contentView 的边缘。
stackView 上的distribution 设置为fill 以允许descriptionLabel 缩小。这种设置会导致约束中断。
问题
titleLabel - UILabel 的高度不明确
descriptionLabel - UILabel 的高度和垂直位置不明确
有没有办法在不打破约束的情况下实现这一点?
我尝试为两个标签设置内容阻力优先级,如下所示:
titleLabel -> label.setContentCompressionResistancePriority(.init(rawValue: 999), for: .vertical)
descriptionLabel -> label.setContentCompressionResistancePriority(.init(rawValue: 998), for: .vertical)
我还是没有运气。
【问题讨论】:
标签: ios autolayout uicollectionviewcell uistackview