根据标题调整 UIButton 的宽度

Posted

技术标签:

【中文标题】根据标题调整 UIButton 的宽度【英文标题】:Adjusting the width of a UIButton depending on its title 【发布时间】:2017-11-19 18:56:36 【问题描述】:

我很难解决这个问题。我有以下情况。在我的故事板中,我有一个表格视图,在表格视图单元格中,我有一个 UIButton 和另一个 UIButton 旁边。第一个按钮有文本,第二个按钮有星形图像。我想要以下内容:

    我想让第一个按钮根据其文本/标题调整其宽度。

    我希望第二个按钮的位置沿第一个按钮的尾随空间移动

我用 sizetofit() 尝试了多个建议,但似乎无法正确处理

【问题讨论】:

A u t o l a y o u t. 你能详细说明一下吗?因为我也见过 cmets,但我没有完全理解 请观看有关自动布局的 WWDC 视频。他们信息量很大 【参考方案1】:

使用自动布局,您不必担心自己调整按钮的大小。这是一个快速的布局来说明:

我添加了一个文本按钮和一个模拟星星的小圆形按钮。在 Xcode 的界面构建器中,我给出了第一个按钮约束:

固定高度 固定视图左侧的空间 固定视图顶部的空间

然后我的第二个圆形按钮得到以下约束:

固定宽度和高度 修复了文本按钮的水平间距 以文本按钮居中垂直对齐

现在,当我在代码中为按钮设置长标题时,您会看到它们以您描述的方式相互跟随:

【讨论】:

感谢您的回复!我还是有问题。当我给按钮说约束时,第一个按钮中的文本被压缩,所以你看到的不是“约束”,而是“co..aint” 这并不总是有效。您还需要更改内容拥抱优先级和内容压缩优先级。 Hugging 将控制控件拥抱其内容的紧密程度(设置为低以使其扩展或设置为高以使其拥抱)。对于压缩,它定义了控件在压力下的压缩方式(设置为低以便它容易压缩或设置为高所以它永远不会压缩)..在你的情况下,你想要拥抱低和压缩高..或者拥抱默认和压缩高:***.com/a/23203345/1462718 我让它工作了!谢谢你!我可能第一次做错了什么 @Brandon 你是对的,也是错的。我按照 Terje 的解决方案让它工作,但只有当我删除当前按钮并将它们替换为新按钮时。在删除之前,我尝试使用拥抱和压缩,但它对我不起作用,但可能是因为限制 @Terje 当您使用标题插图时,您的解决方案不起作用。有没有办法让它与插图一起工作?

以上是关于根据标题调整 UIButton 的宽度的主要内容,如果未能解决你的问题,请参考以下文章

根据文本调整 UIButton 大小的最简单方法

将 UIButton 的 titleLabel 文本与自动布局匹配在固定的恒定宽度上

自动布局中的 UIButton 动态宽度

将 UIButton 字体大小调整为宽度

UiButton 一个“仅界面生成器”解决方案,以响应方式调整标题标签的字体

如何在 Swift 中以编程方式调整 UIButton 中文本的字体大小以适应宽度?