gpt4 book ai didi

ios - StackView 内有 2 个 UILabels 的垂直布局问题

转载 作者:行者123 更新时间:2023-11-29 05:18:54 32 4
gpt4 key购买 nike

我有一个标题标签,定义如下:

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)

我还是没有运气。

最佳答案

通过在 descriptionLabel 上设置内容拥抱优先级,我能够修复布局歧义。

private lazy var descriptionLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.lineBreakMode = .byTruncatingTail
label.setContentHuggingPriority(.high, for: .vertical)
return label
}()

关于ios - StackView 内有 2 个 UILabels 的垂直布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58871163/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com