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 指定的约束进行设置。
我刚刚在 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)
| 归档时间: |
|
| 查看次数: |
2334 次 |
| 最近记录: |