【发布时间】:2017-06-24 18:14:39
【问题描述】:
目前我正在尝试在 3 个水平组中制作 3 个具有相等间距的按钮
UIStackView * menuButtons = [[UIStackView alloc] initWithFrame:CGRectMake(0, 0, 60, 16)];
menuButtons.axis = UILayoutConstraintAxisHorizontal;
menuButtons.alignment = UIStackViewAlignmentBottom;
menuButtons.spacing = 6;
menuButtons.distribution = UIStackViewDistributionEqualSpacing;
UIButton* btnOne = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
UIButton* btnTwo = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
UIButton* btnThree = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
[menuButtons addArrangedSubview:btnOne];
[menuButtons addArrangedSubview:btnTwo];
[menuButtons addArrangedSubview:btnThree];
我注意到,当我以编程方式将按钮视图添加到我的堆栈视图后检查它们的框架时,它们都显示出与最初设置不同的大小,而我希望它们仍然是 16
即:btnOne CGSize(17, 16), btnTwo CGSize(23.5, 23,5), btnThree CGSize(21.3, 21.3)
我不明白为什么会发生这种情况,我已经尝试了所有发行版,但是当我没有在其他任何地方设置这些视图的框架时,我无法弄清楚这一点
【问题讨论】:
-
据我了解,
UIStackView真的 需要自动布局来layout 其排列的视图。由于您明确设置堆栈视图的框架,并且不允许对其工作进行自动布局/约束,因此您最终会得到意想不到的结果。
标签: ios objective-c uibutton uistackview