UIStackView 中等宽的自定义子视图
Custom subviews with equal widths in UIStackView
我一直在尝试用 3 个自定义视图 (PCSimpleDescriptionView) 实现一个视图 (PCHorizontalAdjustableView)。
PCSimpleDescriptionView 有一个垂直 UIStackView,垂直 UIStackView 内有 2 个标签,如下所示:
具有水平 UIStackView 的 PCHorizontalAdjustableView,用于显示 3 个 PCSimpleDescriptionView(添加颜色以突出显示 3 个视图)。
我得到的结果是这样的:
我最理想的是 3 个大小相同的 PCSimpleDescriptionView,显示可用 space 中的标签。
示例工程已上传here
知道我应该怎么做才能实现这个目标吗?
你的错误是- (void)setup
方法
你像子视图一样从 xib 添加视图
[[NSBundle mainBundle] loadNibNamed:@"PCHorizontalAdjustableView" owner:self options:nil];
[self addSubview:self.view];
您需要在 - (void)layoutSubviews
方法
中为这个新的子视图或控制框架添加约束
将此功能添加到您的自定义视图 类 (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];
}`
固定码project
我一直在尝试用 3 个自定义视图 (PCSimpleDescriptionView) 实现一个视图 (PCHorizontalAdjustableView)。
PCSimpleDescriptionView 有一个垂直 UIStackView,垂直 UIStackView 内有 2 个标签,如下所示:
具有水平 UIStackView 的 PCHorizontalAdjustableView,用于显示 3 个 PCSimpleDescriptionView(添加颜色以突出显示 3 个视图)。
我得到的结果是这样的:
我最理想的是 3 个大小相同的 PCSimpleDescriptionView,显示可用 space 中的标签。
示例工程已上传here
知道我应该怎么做才能实现这个目标吗?
你的错误是- (void)setup
方法
你像子视图一样从 xib 添加视图
[[NSBundle mainBundle] loadNibNamed:@"PCHorizontalAdjustableView" owner:self options:nil];
[self addSubview:self.view];
您需要在 - (void)layoutSubviews
方法
将此功能添加到您的自定义视图 类 (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];
}`
固定码project