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

jde*_*man 2 objective-c xib uiview ios uistackview

我将自定义 UIView 添加到 UIScrollView 内的 UIStackView 中。自定义 UIView 是从没有固定宽度的 XIB 创建的。我使用自动布局将自定义视图水平约束到 UIStackView。自定义视图中的所有子视图都有固定高度或固有高度(即标签)。

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

以下是我将自定义视图添加到 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}]];
Run Code Online (Sandbox Code Playgroud)

我怀疑这个问题涉及intrinsicContentSize我的自定义视图,但我认为这将根据界面生成器中为 XIB 指定的约束进行设置。

tit*_*tan 5

我刚刚在 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)
Run Code Online (Sandbox Code Playgroud)