自动布局根据文本调整按钮大小并让文本字段填充可用空间

Posted

技术标签:

【中文标题】自动布局根据文本调整按钮大小并让文本字段填充可用空间【英文标题】:Autolayout resize button based on text and have textfield fill available space 【发布时间】:2014-04-22 17:21:40 【问题描述】:

我正在使用自动布局开发一个 ios 应用程序,

我在它旁边有一个 UITextField 和一个 UIButton。

UIButton 文本是动态更改的。它可以很短(3 个字母)或很长(15 个字母)

我需要添加约束来实现以下目标:

1) 当我更改 UIbutton 文本时,我需要调整按钮大小以适应新文本

2) UITextField 应该调整大小以占用按钮文本更改后剩余的可用空间

我尝试了以下操作(如图所示):

将 UITextView 的前导约束添加到 superview 20

将 UIButton 的尾随约束添加到 superview 20

在它们之间添加了一个固定的距离 10

但现在我被困在如何使 UIButton 使用文本和文本字段调整大小以采用可用大小。

感谢任何帮助

谢谢

【问题讨论】:

【参考方案1】:

试试这些自动布局约束:


基本上:

    UITextField 对象的宽度约束应该是 Less Than or Equal 关系 UIButton 对象的宽度约束应该是 Greater Than or Equal 关系 UITextField 对象的水平 Content Hugging Priority 应该是 249(根据我上面显示的约束设置

及相关代码为:

[buttonObject setTitle:@"Button title is too... zzz" forState:UIControlStateNormal];
[buttonObject sizeToFit];

...或类似的东西

【讨论】:

我认为“sizeToFit”是这里的关键。【参考方案2】:

增加button horizontal content hugging priority,使其高于相邻组件的horizontal content hugging priority

【讨论】:

以上是关于自动布局根据文本调整按钮大小并让文本字段填充可用空间的主要内容,如果未能解决你的问题,请参考以下文章

通过文本字段上的自动布局调整字体大小并改变高度

textView自动调整文本以填充宽度

如何根据标签可用的高度调整 UILabel 字体大小

WPF TextBlock 字体调整大小以填充网格中的可用空间

自动布局:UILabel 无法正确调整长文本的大小

自动布局调整多个标签的大小