UIStackView 中等宽的自定义子视图

Custom subviews with equal widths in UIStackView

我一直在尝试用 3 个自定义视图 (PCSimpleDescriptionView) 实现一个视图 (PCHorizo​​ntalAdjustableView)。

PCSimpleDescriptionView 有一个垂直 UIStackView,垂直 UIStackView 内有 2 个标签,如下所示:

具有水平 UIStackView 的 PCHorizo​​ntalAdjustableView,用于显示 3 个 PCSimpleDescriptionView(添加颜色以突出显示 3 个视图)。

我得到的结果是这样的:

我最理想的是 3 个大小相同的 PCSimpleDescriptionView,显示可用 space 中的标签。

示例工程已上传here

知道我应该怎么做才能实现这个目标吗?

你的错误是- (void)setup方法

你像子视图一样从 xib 添加视图 [[NSBundle mainBundle] loadNibNamed:@"PCHorizontalAdjustableView" owner:self options:nil]; [self addSubview:self.view];

您需要在 - (void)layoutSubviews 方法

中为这个新的子视图或控制框架添加约束

将此功能添加到您的自定义视图 类 (PCHorizo​​ntalAdjustableView, PCSimpleDescriptionView) `

- (void)layoutSubviews {
    [super layoutSubviews];

    self.view.frame = self.bounds;
    [self.view setNeedsLayout];
    [self.view layoutSubviews];
}

- (void)didMoveToWindow {
    [super didMoveToWindow];

    [self setNeedsLayout];
    [self layoutIfNeeded];
}`

固定码project