Ios 来自XIB的自定义UIView在UIStackView中没有高度

Ios 来自XIB的自定义UIView在UIStackView中没有高度,ios,objective-c,uiview,xib,uistackview,Ios,Objective C,Uiview,Xib,Uistackview,我正在向UIScrollView中的UIStackView添加自定义UIView。自定义UIView是从没有固定宽度的XIB创建的。我使用autolayout将自定义视图水平约束到UIStackView。自定义视图中的所有子视图都具有固定高度或固有高度,即标签 当我将UIView添加到UIStackView时,它们彼此堆叠在一起,就好像它们没有高度一样。如何根据interface builder的约束确保堆栈视图中自定义视图的正确高度 以下是如何将自定义视图添加到UIStackView: Cus

我正在向UIScrollView中的UIStackView添加自定义UIView。自定义UIView是从没有固定宽度的XIB创建的。我使用autolayout将自定义视图水平约束到UIStackView。自定义视图中的所有子视图都具有固定高度或固有高度,即标签

当我将UIView添加到UIStackView时,它们彼此堆叠在一起,就好像它们没有高度一样。如何根据interface builder的约束确保堆栈视图中自定义视图的正确高度

以下是如何将自定义视图添加到UIStackView:

CustomView *customView = [CustomView loadFromXib]; // helper to load from xib
customView.translatesAutoresizingMaskIntoConstraints = NO;
[_stackView addArrangedSubview:customView];
[_stackView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[customView]|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{@"customView": customView}]];

我怀疑这个问题与我的自定义视图的intrinsicContentSize有关,但我认为这是根据interface builder中为XIB指定的约束设置的。

我刚刚在swift中遇到这个问题,我添加到UIStackView的每个自定义视图似乎都以0高度显示,并且所有视图都堆在彼此的顶部

为了解决这个问题,我在添加到UIStackView之前为自定义视图设置了高度和宽度约束

let customView = CustomView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 100), customObject: self.customObject)

customView.widthAnchor.constraint(equalToConstant: customView.frame.width).isActive = true
customView.heightAnchor.constraint(equalToConstant: customView.frame.height).isActive = true

contentStackView.insertArrangedSubview(customView, at: 0)

你设置了什么约束条件?看起来还不足以确定高度。intrinsicContentSize适用于视图内容确定最小大小的情况,例如UILabel中的文本使用它。因此,子视图之间有固定的垂直间距限制,加上几个具有固定高度的图像视图,然后是一对具有固有内容大小的标签。但是,有一个标签的宽度设置为superview宽度的75%,numberOfLines=0。我怀疑这就是罪魁祸首。