Ios 在UIStackView中具有相等宽度的自定义子视图

Ios 在UIStackView中具有相等宽度的自定义子视图,ios,autolayout,uistackview,Ios,Autolayout,Uistackview,我一直在尝试使用3个自定义视图PCSimpleDescriptionView实现视图PCHorizontalAdjustableView PCSimpleDescriptionView有一个垂直UIStackView,在垂直UIStackView中有两个标签,如下所示: PCHorizontalAdjustableView,该视图具有用于显示3个PCSimpleDescriptionView的水平视图,添加了颜色以高亮显示3个视图 我得到的结果是: 理想情况下,我希望3个大小相同的PCSimpl

我一直在尝试使用3个自定义视图PCSimpleDescriptionView实现视图PCHorizontalAdjustableView

PCSimpleDescriptionView有一个垂直UIStackView,在垂直UIStackView中有两个标签,如下所示:

PCHorizontalAdjustableView,该视图具有用于显示3个PCSimpleDescriptionView的水平视图,添加了颜色以高亮显示3个视图

我得到的结果是:

理想情况下,我希望3个大小相同的PCSimpleDescriptionView在可用空间中显示标签

示例项目已上载

你知道我该怎么做才能做到这一点吗?

你的错误是-voidsetup方法

您可以像添加子视图一样从xib添加视图 [[NSBundle mainBundle]loadNibNamed:@PCHorizontalAdjustableView所有者:自选项:nil]; [self addSubview:self.view]

您需要在-voidlayoutSubviews方法中将约束添加到此新的子视图或控制框

将此函数添加到自定义视图的类PCHorizontalAdjustableView、PCSimpleDescriptionView`

- (void)layoutSubviews {
    [super layoutSubviews];

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

- (void)didMoveToWindow {
    [super didMoveToWindow];

    [self setNeedsLayout];
    [self layoutIfNeeded];
}`
固定代码


谢谢你的解决方案。我刚刚添加了self.view.frame=self.bounds;在LayoutSubView中解决此问题。似乎不需要其他方法。但当布局阶段发生时,是否应该自动设置正确的框架?您必须在addSubview函数之后添加约束。这将是一个自动解决方案。你在说什么约束?我需要理解为什么它不会自动发生。加载nib,然后约束过程应该接管->布局过程->显示过程。从xib加载附加视图->将加载的视图作为子视图添加到故事板的视图中。若您想从xib查看负载-您必须注意容器的框架