У меня проблемы с настройкой автоматического макета для UILabel, и я хотел бы получить помощь по этому вопросу.

На картинке я создал желтый и зеленый UILabels.
То, чего я хочу добиться, - это динамически регулировать высоту желтого UILabel на основе количества строк в его содержимом и привязать верхнюю часть зеленого поля к закреплению нижней части желтого поля.
В настоящее время у меня есть следующий код:
// Yellow UILabel
addSubview(captionLabel)
captionLabel.anchor(top: actionButtonsStackView.bottomAnchor, left: leadingAnchor, bottom: nil, right: trailingAnchor, paddingTop: 0, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)
captionLabel.heightAnchor.constraint(greaterThanOrEqualToConstant: 0).isActive = true
// Green UILabel
addSubview(dateLabel)
dateLabel.anchor(top: captionLabel.bottomAnchor, left: leadingAnchor, bottom: bottomAnchor, right: trailingAnchor, paddingTop: 0, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)
Примечание: функция привязки устанавливает верхние, ведущие, нижние и конечные ограничения с соответствующими дополнениями.
Как видите, желтая UILabel занимает больше места, чем нужно на самом деле.
Если я оставлю верхнее ограничение из зеленой UILabel, желтая рамка действительно начнет работать так, как я ожидаю:

И код для этого выглядит следующим образом:
// Yellow UILabel
addSubview(captionLabel)
captionLabel.anchor(top: actionButtonsStackView.bottomAnchor, left: leadingAnchor, bottom: nil, right: trailingAnchor, paddingTop: 0, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)
captionLabel.heightAnchor.constraint(greaterThanOrEqualToConstant: 0).isActive = true
// Green UILabel
addSubview(dateLabel)
dateLabel.anchor(top: nil, left: leadingAnchor, bottom: bottomAnchor, right: trailingAnchor, paddingTop: 0, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)
Что я здесь не так делаю?
На самом деле, удаление bottomAnchor из зеленого поля заставляет его работать: 
И код для этого выглядит так:
// Yellow UILabel
addSubview(captionLabel)
captionLabel.anchor(top: actionButtonsStackView.bottomAnchor, left: leadingAnchor, bottom: nil, right: trailingAnchor, paddingTop: 0, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)
captionLabel.heightAnchor.constraint(greaterThanOrEqualToConstant: 0).isActive = true
// Green UILabel
addSubview(dateLabel)
dateLabel.anchor(top: captionLabel.bottomAnchor, left: leadingAnchor, bottom: nil, right: trailingAnchor, paddingTop: 0, paddingLeft: 8, paddingBottom: 0, paddingRight: 8, width: 0, height: 0)
Но почему он работает? Я подумал, установив константу greatThenOrEqual, саму желтую UILabel автоматически увеличивать размер до размера, достаточного для его содержимого, а зеленую UILabel корректировать его размер в соответствии с желтой UILabel bottomAnchor.