关于ios:UIStackView是否无法使其自身与中心对齐? obj-c

UIStackView isn't aligning itself to center? obj-c

编辑解决方案是将它们添加到垂直堆栈视图中,这要感谢下面提供该解决方案的用户!

所以我很新,并且设法创建了一个UIStackView,但是它不在我的视图中正确居中(它向左对齐,我不确定如何修复它。)

这是我的代码的样子,如果有人可以帮助我弄清楚a)为什么它没有跨越整个屏幕的宽度,或者b)我如何在屏幕上居中显示stackview。

我一直在通过一种变通方法来伪造居中外观,方法是将间距设置为等于剩余空间,但是我想如果我可以将整个UIStackView居中,那将是没有必要的

此代码大多数都被黑了,所以我忽略了某件事可能很简单? idk,会一直在摆弄它,但也许我有那么多经验丰富的眼睛可以给我一眼,我会很感激的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(id)reuseIdentifier specifier:(id)specifier {

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier specifier:specifier];



    if (self) {
/*
     CGFloat width = [UIScreen mainScreen].bounds.size.width;
     CGFloat leftover = (width - (4 * 70)); //4 = number of buttons, 70 = width of buttons, is usually constant
     CGFloat newspacing = leftover/3; //3 is equal to total number of spacers needed
how i currently workaround the issue*/


//buttons declared here but omitted to save space

//Stack View
   UIStackView *stackView = [[UIStackView alloc] initWithFrame:self.bounds];
    [stackView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
    [stackView setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
    stackView.axis = UILayoutConstraintAxisHorizontal;
    stackView.distribution = UIStackViewDistributionEqualSpacing;
    stackView.alignment = UIStackViewAlignmentCenter;
    stackView.spacing = 5;//newspacing; //fills up leftover space..

 [stackView addArrangedSubview:bugbutton];
 [stackView addArrangedSubview:paypalbutton];
 [stackView addArrangedSubview:btcbutton];
 [stackView addArrangedSubview:musicbutton];

 stackView.translatesAutoresizingMaskIntoConstraints = false;

 [self addSubview:stackView];
}



return self;
}


您是否只想将stackview放在单元格的中央?我不知道您是否要尝试做。您可以通过2种不同的方式来做到这一点。
编辑:
尝试嵌套堆栈视图以获取所需的布局。我希望语法正确。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
UIStackView *stackView = [[UIStackView alloc] initWithFrame:self.bounds];

stackView.axis = UILayoutConstraintAxisHorizontal;
stackView.distribution = UIStackViewDistributionFillProportionally;
stackView.alignment = UIStackViewAlignmentCenter;
stackView.spacing = 5;//newspacing; //fills up leftover space..

[stackView addArrangedSubview:bugbutton];
[stackView addArrangedSubview:paypalbutton];
[stackView addArrangedSubview:btcbutton];
[stackView addArrangedSubview:musicbutton];




UIStackView *verticalstackView = [[UIStackView alloc] initWithFrame:self.bounds];
verticalstackView.axis = UILayoutConstraintAxisVertical;
verticalstackView.distribution = UIStackViewAlignmentFill;
verticalstackView.alignment = UIStackViewAlignmentCenter;

 vericalstackView.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)

[verticalstackView addArrangedSubview:stackView];
[self addSubview:verticalstackView];

水平堆栈进入垂直堆栈,从而可以调整到中心。