新增控制堆栈视图以优化房间推荐视图的布局,调整约束以确保 UI 元素的正确排列。更新 miniStackView 和 exitStackView 的内容压缩和拥抱优先级,提升布局的灵活性和可维护性。

This commit is contained in:
edwinQQQ
2025-09-16 16:08:28 +08:00
parent 8d8beeaa2d
commit eb0feb1b73

View File

@@ -20,6 +20,7 @@
@property (nonatomic, strong) UIToolbar *toolBar; @property (nonatomic, strong) UIToolbar *toolBar;
@property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) UIStackView *controlStackView;
@property (nonatomic, strong) UIStackView *miniStackView; @property (nonatomic, strong) UIStackView *miniStackView;
@property (nonatomic, strong) UIStackView *exitStackView; @property (nonatomic, strong) UIStackView *exitStackView;
@@ -50,12 +51,16 @@
#pragma mark - lifeCycle #pragma mark - lifeCycle
- (void)setUpUI { - (void)setUpUI {
[self addSubview:self.toolBar]; [self addSubview:self.toolBar];
[self addSubview:self.miniStackView];
[self addSubview:self.exitStackView]; [self addSubview:self.controlStackView];
[self.miniStackView addArrangedSubview:self.miniButton]; [self.miniStackView addArrangedSubview:self.miniButton];
[self.miniStackView addArrangedSubview:self.miniLabel]; [self.miniStackView addArrangedSubview:self.miniLabel];
[self.exitStackView addArrangedSubview:self.exitButton]; [self.exitStackView addArrangedSubview:self.exitButton];
[self.exitStackView addArrangedSubview:self.exitLabel]; [self.exitStackView addArrangedSubview:self.exitLabel];
[self.controlStackView addArrangedSubview:self.miniStackView];
[self.controlStackView addArrangedSubview:self.exitStackView];
[self addSubview:self.recommentLabel]; [self addSubview:self.recommentLabel];
[self addSubview:self.tableView]; [self addSubview:self.tableView];
} }
@@ -70,14 +75,10 @@
[self.toolBar mas_makeConstraints:^(MASConstraintMaker *make) { [self.toolBar mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.leading.trailing.bottom.mas_equalTo(self); make.top.leading.trailing.bottom.mas_equalTo(self);
}]; }];
[self.miniStackView mas_makeConstraints:^(MASConstraintMaker *make) { [self.controlStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(kStatusBarHeight + 8); make.top.mas_equalTo(kStatusBarHeight + 8);
make.leading.mas_equalTo(self).mas_offset(36); make.leading.trailing.mas_equalTo(self);
}];
[self.exitStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(kStatusBarHeight + 8);
make.leading.mas_equalTo(self.miniStackView.mas_trailing).mas_offset(65);
}]; }];
@@ -88,7 +89,7 @@
make.width.height.mas_equalTo(54); make.width.height.mas_equalTo(54);
}]; }];
[self.recommentLabel mas_makeConstraints:^(MASConstraintMaker *make) { [self.recommentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.miniStackView.mas_bottom).mas_offset(16); make.top.mas_equalTo(self.controlStackView.mas_bottom).mas_offset(16);
make.leading.mas_equalTo(11); make.leading.mas_equalTo(11);
}]; }];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -179,8 +180,18 @@
return _exitButton; return _exitButton;
} }
- (UIStackView *)controlStackView {
if (!_controlStackView) {
_controlStackView = [[UIStackView alloc] init];
_controlStackView.axis = UILayoutConstraintAxisHorizontal;
_controlStackView.distribution = UIStackViewDistributionEqualSpacing;
_controlStackView.alignment = UIStackViewAlignmentCenter;
_controlStackView.spacing = 65;
_controlStackView.layoutMargins = UIEdgeInsetsMake(0, 36, 0, 36);
_controlStackView.layoutMarginsRelativeArrangement = YES;
}
return _controlStackView;
}
- (UIStackView *)miniStackView { - (UIStackView *)miniStackView {
if (!_miniStackView) { if (!_miniStackView) {
@@ -189,9 +200,12 @@
_miniStackView.distribution = UIStackViewDistributionFill; _miniStackView.distribution = UIStackViewDistributionFill;
_miniStackView.alignment = UIStackViewAlignmentCenter; _miniStackView.alignment = UIStackViewAlignmentCenter;
_miniStackView.spacing = 17; _miniStackView.spacing = 17;
[_miniStackView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[_miniStackView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
} }
return _miniStackView; return _miniStackView;
} }
- (UIStackView *)exitStackView { - (UIStackView *)exitStackView {
if (!_exitStackView) { if (!_exitStackView) {
_exitStackView = [[UIStackView alloc] init]; _exitStackView = [[UIStackView alloc] init];
@@ -199,12 +213,12 @@
_exitStackView.distribution = UIStackViewDistributionFill; _exitStackView.distribution = UIStackViewDistributionFill;
_exitStackView.alignment = UIStackViewAlignmentCenter; _exitStackView.alignment = UIStackViewAlignmentCenter;
_exitStackView.spacing = 17; _exitStackView.spacing = 17;
[_exitStackView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[_exitStackView setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
} }
return _exitStackView; return _exitStackView;
} }
- (UILabel *)miniLabel { - (UILabel *)miniLabel {
if (!_miniLabel) { if (!_miniLabel) {
_miniLabel = [[UILabel alloc] init]; _miniLabel = [[UILabel alloc] init];
@@ -212,6 +226,7 @@
_miniLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; _miniLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium];
_miniLabel.textAlignment = NSTextAlignmentCenter; _miniLabel.textAlignment = NSTextAlignmentCenter;
_miniLabel.textColor = [UIColor whiteColor]; _miniLabel.textColor = [UIColor whiteColor];
_miniLabel.numberOfLines = 0;
} }
return _miniLabel; return _miniLabel;
} }
@@ -223,6 +238,7 @@
_exitLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; _exitLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium];
_exitLabel.textAlignment = NSTextAlignmentCenter; _exitLabel.textAlignment = NSTextAlignmentCenter;
_exitLabel.textColor = [UIColor whiteColor]; _exitLabel.textColor = [UIColor whiteColor];
_exitLabel.numberOfLines = 0;
} }
return _exitLabel; return _exitLabel;
} }