Ios 如何根据标题标签文本的变化增加/减少UIButton宽度?
我问的问题纯粹是使用自动布局,我不想根据文本宽度手动设置框架Ios 如何根据标题标签文本的变化增加/减少UIButton宽度?,ios,iphone,autolayout,storyboard,nslayoutconstraint,Ios,Iphone,Autolayout,Storyboard,Nslayoutconstraint,我问的问题纯粹是使用自动布局,我不想根据文本宽度手动设置框架 我知道内容优先权的变化,我对一个标签和一个按钮使用了相同的更改。标签可以正常工作,但对按钮无效。如果您想这样做,有人能帮忙吗,您可以创建自定义视图:获取-UIView并将其类更改为UIButton,添加UILabel并应用所有必需的约束。 通过这些设置,您可以实现所需的UI。 如果您想这样实现,请尝试此操作。 UILabel对象的宽度约束应小于 或同等关系 ui按钮对象的宽度约束应更大 等比关系 UILabel对象的水平内容包含优先
我知道内容优先权的变化,我对一个标签和一个按钮使用了相同的更改。标签可以正常工作,但对按钮无效。如果您想这样做,有人能帮忙吗,您可以创建自定义视图:获取-
UIView
并将其类更改为UIButton
,添加UILabel
并应用所有必需的约束。
通过这些设置,您可以实现所需的UI。
如果您想这样实现,请尝试此操作。
对象的宽度约束应小于 或同等关系UILabel
对象的宽度约束应更大 等比关系ui按钮
对象的水平内容包含优先级 应为249(根据上面显示的我的约束设置)UILabel
- 并根据需要将
width常量值设置为最大可能值李>UILabel
[buttonObject setTitle:@"Button title is ..." forState:UIControlStateNormal];
[buttonObject sizeToFit];
该按钮已将其“固有内容宽度”设置为适合其标题 如果没有其他约束覆盖该内部内容宽度,则按钮将是您想要的内部宽度。演示: 以下是我的故事板大纲: 我将水平堆栈视图的对齐设置为“左”(而不是“填充”),这样它就不会拉伸顶行以填充屏幕宽度 如果您的按钮在其固有宽度上不,则您有更高的优先级(可能是优先级1000)约束,迫使它使用其他宽度 您可以通过将其内容拥抱优先级和内容压缩阻力优先级设置为1000,尝试强制它始终保持其固有的内容宽度
如果您将两个优先级都设置为1000,并且有任何其他所需的约束阻止按钮成为其固有大小,则在运行时调试日志中将显示错误消息,告知您存在冲突(不可满足)约束。这些消息将包含完整的约束集,因此您可以尝试跟踪哪些约束是您不想要的。谢谢@rob,我有一些问题:您对button有哪些约束?堆栈视图是否存在依赖关系?我没有对按钮设置任何约束。顶级(垂直)堆栈视图对superview的顶边、前缘和后缘具有约束。文档大纲显示了我创建的每个约束。如果我不想使用堆栈视图怎么办?那么…不要使用堆栈视图。我的答案的重要部分与堆栈视图无关。