如何根据标题标签文本更改增加/减少UIButton宽度?

时间:2017-07-25 12:27:46

标签: ios iphone autolayout storyboard nslayoutconstraint

我问的问题纯粹是使用自动布局,我不想根据文字宽度手动设置框架。

我知道更改内容拥抱优先级,我使用相同的标签和一个按钮,它适用于标签但不适用于按钮,任何人都可以帮助

4 个答案:

答案 0 :(得分:0)

如果你想这样做,你可以创建自定义视图:Take - UIView并将其更改为UIButton并添加UILabel并应用所有必需的限制。 通过这一切设置,您可以实现所需的UI。 请试试这个如果你想这样实现。

答案 1 :(得分:0)

Autolayout constraints

  • UILabel对象的宽度约束应该小于 或平等关系
  • UIButton对象的宽度约束应该是更大的 比或平等关系
  • UILabel对象的水平内容拥抱优先级 应该是249(根据我上面显示的约束设置)
  • 并将UILabel宽度常量值设置为最大可能值作为您的要求。

相关代码为:

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

答案 2 :(得分:0)

该按钮已设置其“内在宽度”以适合其标题。

如果没有其他约束覆盖该内在内容宽度,则该按钮将是该内在宽度,这是您想要的。演示:

demo

这是我的故事板大纲:

storyboard outline

我将水平堆栈视图的对齐设置为“左”(而不是“填充”),因此它不会拉伸顶行来填充屏幕宽度。

如果您的按钮在其固有宽度,则您具有更高优先级(可能是优先级1000)约束,将其强制为其他宽度。

您可以尝试通过将其内容拥抱优先级及其内容压缩阻抗优先级设置为1000来强制它始终保持其内在内容宽度。

如果将两个优先级都设置为1000,并且您有任何其他必需的约束来阻止该按钮成为其固有大小,您将在运行时在调试日志中收到错误消息,告知您存在冲突(不可满足)约束。这些消息将包含完整的约束集,因此您可以尝试跟踪您不希望的约束条件。

答案 3 :(得分:-1)

如果您想根据标签文字更改按钮宽度,

1.不修复标签宽度

2.现在,依靠标签宽度上的按钮宽度,即等宽。