Xcode如何在水平stackview中创建一个方形按钮(宽度等于高度)

Posted

技术标签:

【中文标题】Xcode如何在水平stackview中创建一个方形按钮(宽度等于高度)【英文标题】:Xcode How to create a square button(width equal to height) inside a Horizontal stackview 【发布时间】:2017-10-14 22:00:25 【问题描述】:

我需要在页面底部创建 3 个方形按钮。所有这些都必须对齐,并且它们的大小应该是方形的。

到目前为止,我已经创建了一个水平堆栈视图,并创建了自动布局约束,从左侧开始 50,从右侧开始 50,从底部开始 10,并将堆栈视图高度设置为 60。

我如何创建方形按钮,因为 stackview 子视图的宽度是动态的并且在运行时确定?

如何为这三个按钮设置相同的纵横比?

【问题讨论】:

【参考方案1】:

不要设置堆栈视图高度;让内容来决定。

您还没有确切说明您希望按钮的布局方式,但我假设您希望它们平均分布。

    将按钮放在水平堆栈视图中 将堆栈视图的前、后和底部边缘约束到父视图 将堆栈视图的对齐方式设置为“填充”并将分布设置为“等间距” 在每个按钮上,在其宽度和高度之间创建一个 1:1 的纵横比约束 如果您想要按钮的最小高度,请在其中一个上设置 >= 高度限制 如果您想要按钮的固定高度,请在其中一个上设置 = 高度约束

【讨论】:

我可以将前两个按钮的纵横比设置为 1:1,但是当我移到第三个时,内容会超出页面。如果我将stackview x坐标设置为0,0。然后它要求我删除前两个按钮的纵横比 您是否完全按照我的描述创建了约束和设置? IE。摆脱堆栈视图高度约束并仅创建我列出的约束(如果需要将其与其他内容隔开,您可以在堆栈视图顶部和其他内容之间添加一个约束)?我只是使用这些确切的步骤来创建这个答案,它可以正常工作。 是的,我已经清理了代码并按照您的步骤操作。非常感谢 长宽比!愿你幸福【参考方案2】:

我认为您唯一缺少的就是在 Stack View 的 Attributes Inspector 中设置 Distribution。如下图所示将其设置为均匀分布:

要设置高度,您只需在每个按钮上设置一个高度约束。点击 tie fighter 外观图标并设置每个的高度:

【讨论】:

平均填充会给我等宽如何设置等高 检查有问题的图像我没有得到圆形按钮,因为宽度相同但高度不同,我无法设置纵横比 我看到了你的问题。似乎是一个错误。清除堆栈视图上的前导和尾随约束。然后设置一个约束来在容器中水平设置 StackView。然后,在 Attributes Inspector 中根据需要设置 Stack View Spacing Attribute。

以上是关于Xcode如何在水平stackview中创建一个方形按钮(宽度等于高度)的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 中创建带有标题的大导航栏

UIView 和 StackView 删除元素,Swift

如何在 Xcode 中创建 Entitlement.plist 文件?

如何在水平stackview中居中按钮?

如何在 Xcode 中创建一个新的 C++ 项目?

AutoLayout 和 Embedded stackview 约束冲突