使用自动布局在条中的项目之间排列水平空间

Posted

技术标签:

【中文标题】使用自动布局在条中的项目之间排列水平空间【英文标题】:Arrange horizontal space between items in a bar using autolayout 【发布时间】:2017-07-19 09:51:58 【问题描述】:

我目前有一个这样的视图,我如何设置约束以在所有屏幕尺寸下像 Iphone 7 评论一样显示项目?我已经尝试了很多约束,包括 stackView 但没有用。非常感谢您,祝您有美好的一天。

【问题讨论】:

你可能想要使用 stackview 我试过了,但是好像不太好。完成按钮仍然丢失,我也想知道其他解决方案。 @DuyKhanhNguyen 您需要底部图标同样对齐吗?如果它们有其他更好的选项堆栈视图,请尝试提供相等的宽度和高度约束。 你设置了什么约束?这些是在 UIToolbar 中还是在包含视图中只有 5 个 UIButton? 参考:***.com/questions/32862142/… 【参考方案1】:

你可以在黑色视图中使用五个视图:

第一个视图的约束:

superview 的领先空间:0 superview 的底部和顶部空间:0 第二个视图的尾随空间:0

第二、第三和第四视图的约束:

左视图前导空间:0 superview 的底部和顶部空间:0 右视图的尾随空格:0 与第一视图等高和等高

最后(第 5 个)视图的约束:

左视图的前导空间(第 4 个):0 superview 的底部和顶部空间:0 superview 的尾随空间:0 与第一视图等高和等高

然后在这些视图中插入您的按钮或元素及其约束(例如水平中心/垂直中心)

【讨论】:

【参考方案2】:

使用 UIToolbar,其中包含一个 UIBarButtonSystemItemFlexibleSpace 项目,您可以将其放置在 5 个常规项目之间。

在 Obj-C 代码中,您会执行以下操作:

- (void)viewDidLoad

    [super viewDidLoad];

    [self.navigationController setToolbarHidden:NO];

    UIBarButtonItem* spaceItem1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                                target:self
                                                                                action:nil];

    ... create other items ...

    self.toolbarItems = @[ item1, spaceItem1, item2, spaceItem2, ... ];

    ...

【讨论】:

以上是关于使用自动布局在条中的项目之间排列水平空间的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局来布局三个项目水平相等

使用自动布局在三个标签之间保留相同的空间

使用自动布局删除视图并重新排列其余部分

项目之间的水平线性布局空间,没有左右填充

如何使用自动布局来实现如下布局?

ElegantSnap 一个优雅的,易用的iOS/tvOS/macOS自动布局框架, 超级详细的使用教程,多视图水平等宽/垂直等高排列