ios swift flexlayout получить высоту гибкого трубопровода после добавления элементов

#ios #swift #flexbox #constraints #layoutsubviews

Вопрос:

Ниже приведен мой код для добавления элемента в макет flex https://github.com/layoutBox/FlexLayout

         rootFlexContainer.flex.direction(.row).wrap(.wrap).alignSelf(.auto).justifyContent(.start).paddingRight(2).define { (flex) in
        for i in 0..<((retailerTags?.count ?? 0) > 3 ? 3 : (retailerTags?.count ?? 0)) {
            let nameLabel = UIButton()
            nameLabel.isUserInteractionEnabled = false
            nameLabel.setTitle((retailerTags?[i] ?? "").trim(), for: .normal)
            nameLabel.setTitleColor(.black, for: .normal)
            nameLabel.titleLabel?.font = FontStyle.ProximaNovaRegular(size: 11)
            nameLabel.contentEdgeInsets = UIEdgeInsets(top: 1.5, left: 4, bottom: 1.5, right:4)
            nameLabel.layer.borderColor = UIColor.hexStringToUIColor(hex: TravelXStrings.grayBorderColor).cgColor
            nameLabel.layer.cornerRadius = 8
            nameLabel.layer.borderWidth = 1.0
            flex.addItem(nameLabel).margin(2)
            
           
        }
        if cashbackString != "" {
        let cashbackLabel = UIButton()
            
            cashbackLabel.backgroundColor = UIColor.hexStringToUIColor(hex: TravelXStrings.orangeCashbackColor)
            cashbackLabel.isUserInteractionEnabled = false
            cashbackLabel.setTitle(cashbackString, for: .normal)
            cashbackLabel.setTitleColor(.black, for: .normal)
            cashbackLabel.titleLabel?.font = FontStyle.ProximaNovaRegular(size: 10)
            cashbackLabel.contentEdgeInsets = UIEdgeInsets(top: 1.5, left: 5, bottom: 1.5, right: 5)
            cashbackLabel.layer.cornerRadius = 8
            cashbackLabel.layer.borderWidth = 0
            flex.addItem(cashbackLabel).margin(2)
        }
 
        
    }
    
 

после добавления представления я не могу получить высоту этого контейнера rootflex вскоре после добавления элемента, попробовавшего использовать границы.высота, flex.intrinsicSize.высота, но возврат высоты неверен, получая точную высоту только в методе layoutSubviews()

  override func layoutSubviews() {
    super.layoutSubviews()
    layout()
}

fileprivate func layout() {
    rootFlexContainer.frame.size.width = frame.width - 20
    rootFlexContainer.flex.layout(mode: .adjustHeight)
    if(rootFlexContainer.frame.height ! = 0){
        tagsHeight.constant = rootFlexContainer.frame.height
    }
    //tagsView.flex.layout(mode: .adjustWidth)
}
 

как получить точную высоту гибкого макета до вызова layoutSubviews и вскоре после добавления элементов?