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]; |
水平堆栈进入垂直堆栈,从而可以调整到中心。